Missing number

题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=114468

题意:

      一组顺序数少了2个数,现在,我们了解到这顺序数有那些,需要找到丢失的那2个数。

     (要求输入多组数据)

      案例:

      input

      2

      3

      3 4 5

      1

      1

      output

      1 2

      2 3

思路分析:

      长度为n的排列就是从1~n这连续的n个数。

      故,直接找出从1~(n+2)中缺少的数即可。

      直接进行两层循环,为了减少运行时间,可以尽量减少不必要的循环,所以,当找到那个数直接跳出第二层循环,如果找到两个数,可直接跳出第一层循环。

      还需要注意一点在两个数之后是没有空格的,注意空格输出

源代码如下:

    

 1 #include<iostream>

 2 #define max 1000

 3 using namespace std;

 4 int main()

 5 {

 6     int T,n,a[max],i,j,k,s=0;

 7     cin>>T;

 8     for(i=1;i<=T;i++)

 9     {

10         s=0;

11         cin>>n;

12         for(j=0;j<n;j++)

13             cin>>a[j];

14         for(j=1;j<=n+2;j++)

15         {

16             for(k=0;k<n;k++)

17                 if(j==a[k])

18                     break;

19                 if(k>=n)

20                 {

21                     s++;

22                     cout<<j;

23                     if(s==1)

24                        cout<<" ";

25                 }

26                 if(s==2)

27                     break;

28         }

29         cout<<endl;

30     }    

31     return 0;

32 }

 

你可能感兴趣的:(number)