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 }
原文地址:https://www.cnblogs.com/q-c-y/p/4656223.html