//杭电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 发布