1.7思考题:
1.7.1清单的奸细
【问题描述】
我党有N名(保证N为偶数)特工,这其中混入了2名奸细,谁也不知道是哪个。好在真正的特工都有自己的编号,并且编号都是成对出现的,既2名真正特工拥有相同编号,而那2名奸细只能各自瞎编一个编号。
【输入格式】
2行
第1行包含一个整数N(保证为偶数,0 < N <= 100000)
第2行包含N个整数(每个整数小于10000000),代表每个人的编号,空格隔开。
【输出格式】
2名奸细的编号(顺序和输出一致),空格隔开
【样例输入】
6
54321 34 12345 54321 33 12345
【样例输出】
34 33
思路分析
本题可以因为确定只有两个奸细,且奸细的编号一定不同所以代码的思路就很清晰了,可以直接对比找出不同的两个数据
#include<stdio.h>
int main(){
int a[100001]={
0},i,n,j,k,b[2]={
0},z=0,p=0,ans=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(j=1;j<=n;j++){
for(k=1;k<=n;k++){
if(k==j){
continue;
}
if(a[j]==a[k]){
z=1;
}
else{
p++;
}
}
if(p==n-1&&z==0){
b[ans]=a[j];
ans++;
}
p=0;
z=0;
}
printf("%d %d",b[0],b[1]);
}