hdu 2016 数据的交换输出

http://acm.hdu.edu.cn/showproblem.php?pid=2016

题目大意

输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。

Sample Input

4 2 1 3 4

5 5 4 3 2 1

0

Sample Output

1 2 3 4

1 4 3 2 5

方法与总结

  • 找到最小值
  • 交换

代码

#include<iostream>
using namespace std;

int ()
{
    int n;
    while(cin>>n && n!=0)
    {
        int min=0;
        int *p=new int[n];
        for(int i=0;i<n;i++)
        cin>>p[i];
        for(int i=0;i<n;i++)
        {
            if(p[i]<p[min])
            min=i;
        }
        int x=p[0];
        p[0]=p[min];
        p[min]=x;
        for(int i=0;i<n;i++)
        {
            cout<<p[i];
            if(i<n-1)
            cout<<" ";
        }
        cout<<endl;
    }
    return 0;
}