A题
题意:让你找出唯一的一个四位数,满足对话时的要求。
思路:因为是4位数,可以直接从1000-9999遍历一遍,判断是否有唯一的数能满足所有条件,如果不是唯一的或者没有满足条件的数就输出Not sure。特别丑的代码附上。。。
1 #include<stdio.h> 2 int a[10000],b[10000],c[10000]; 3 int main() 4 { 5 int n; 6 while(~scanf("%d",&n)) 7 { 8 if(n==0)break; 9 int i,flag=0,ans,j,k; 10 for(i=1;i<=n;i++) 11 scanf("%d%d%d",a+i,b+i,c+i); 12 for(i=1000;i<=9999;i++) 13 { 14 int a1,a2,a3,a4,i1,i2,i3,i4,bx=0,cx=0,flg=1;///ax代表a[i]的第x个数,ix代表i的第x个数 15 for(j=1;j<=n;j++) 16 { 17 bx=0;cx=0; 18 a1=a[j]/1000; 19 a2=(a[j]/100)%10; 20 a3=(a[j]/10)%10; 21 a4=a[j]%10; 22 i1=i/1000; 23 i2=(i/100)%10; 24 i3=(i/10)%10; 25 i4=i%10; 26 if(a1==i1)///先判断位置正确的 27 cx++; 28 if(a2==i2) 29 cx++; 30 if(a3==i3) 31 cx++; 32 if(a4==i4) 33 cx++; 34 if(a1==i1)///这里如果判和i中的一个数相等,就让i中的那个数为11,就不会再和下个数匹配了,防止出现当类似ai=1111,i=1234的时候a1,a2,a3,a4都和i1匹配成功的情况。 35 { 36 bx++; 37 i1=11; 38 } 39 else if(a1==i2) 40 { 41 bx++; 42 i2=11; 43 } 44 else if(a1==i3) 45 { 46 bx++; 47 i3=11; 48 } 49 else if(a1==i4) 50 { 51 bx++; 52 i4=11; 53 } 54 if(a2==i1) 55 { 56 bx++; 57 i1=11; 58 } 59 else if(a2==i2) 60 { 61 bx++; 62 i2=11; 63 } 64 else if(a2==i3) 65 { 66 bx++; 67 i3=11; 68 } 69 else if(a2==i4) 70 { 71 bx++; 72 i4=11; 73 } 74 if(a3==i1) 75 { 76 bx++; 77 i1=11; 78 } 79 else if(a3==i2) 80 { 81 bx++; 82 i2=11; 83 } 84 else if(a3==i3) 85 { 86 bx++; 87 i3=11; 88 } 89 else if(a3==i4) 90 { 91 bx++; 92 i4=11; 93 } 94 if(a4==i1) 95 { 96 bx++; 97 i1=11; 98 } 99 else if(a4==i2) 100 { 101 bx++; 102 i2=11; 103 } 104 else if(a4==i3) 105 { 106 bx++; 107 i3=11; 108 } 109 else if(a4==i4) 110 { 111 bx++; 112 i4=11; 113 } 114 if(bx!=b[j]||cx!=c[j]) 115 { 116 flg=0; 117 break; 118 } 119 } 120 if(flg) 121 { 122 123 ans=i; 124 flag++; 125 } 126 } 127 if(flag==1) 128 printf("%d\n",ans); 129 else 130 printf("Not sure\n"); 131 } 132 }