题目链接: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 }