//杭电ACM1172 //猜数字 #include<iostream> using namespace std; int array[100][3]; bool test(int a,int b) { int d[4]={0}; int count1=0;//统计在正确位置的数字的个数 int count2=0;//统计猜对的数字个数 int array1[4]; int array2[4]; array1[0]=a%10; array1[1]=(a/10)%10; array1[2]=(a/100)%10; array1[3]=(a/1000)%10; array2[0]=array[b][0]%10; array2[1]=(array[b][0]/10)%10; array2[2]=(array[b][0]/100)%10; array2[3]=(array[b][0]/1000)%10; for(int m=0;m<4;m++) if(array1[m]==array2[m])//计算在正确位置的数字的个数 count1++; if(count1!=array[b][2]) return false; for(int n=0;n<4;n++) { for(int p=0;p<4;p++) if(array1[n]==array2[p]&&d[p]==0) { count2++; d[p]=1; break; } } if(count2==array[b][1]) return true; else return false; } int main() { int count=0,A,B,C,t; int k=0; cout<<"输入数的组数: "; cin>>count; for(int i=0;i<count;i++) { cout<<"输入第"<<i+1<<"组数 "; cin>>A>>B>>C; array[i][0]=A; array[i][1]=B; array[i][2]=C; } for(int i1=1000;i1<=9999;i1++) { bool flag=true; for(int j=0;j<count;j++) { flag=test(i1,j); if(!flag) break; } if(flag) { k++; t=i1; } } if(k==1) cout<<t<<endl; else cout<<"Not sure"<<endl; return 0; }
杭电ACM 1172
最新推荐文章于 2020-02-27 17:50:00 发布