水题。枚举。
#include<iostream>
#include<stdio.h>
using namespace std;
int num[105],A[105],B[105];
bool pan(int a,int b,int c,int d)
{
int numa[5],numb[5],used[5];
int i=1,count,j;
while(a!=0)
{
numa[i]=a%10;
i=i+1;
a=a/10;
}
i=1;
while(b!=0)
{
numb[i]=b%10;
i=i+1;
b=b/10;
}
count=0;
for(i=0;i<=4;i++)
used[i]=0;
for(i=1;i<=4;i++)
if(numa[i]==numb[i])
count=count+1;
if(count!=d)
return false;
count=0;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
if(numa[i]==numb[j]&&used[j]==0)
{
count=count+1;
used[j]=1;
break;
}
if(count!=c)
return false;
return true;
}
int main()
{
int n,i,count,judge,j,ok;
while(scanf("%d",&n))
{
if(n==0)
break;
for(i=1;i<=n;i++)
scanf("%d%d%d",&num[i],&A[i],&B[i]);
count=0;
for(i=1000;i<=9999;i++)
{
judge=0;
for(j=1;j<=n;j++)
{
if(pan(i,num[j],A[j],B[j])==false)
judge=1;
if(judge==1)
break;
}
if(judge==0)
{
count=count+1;
ok=i;
}
}
if(count==1)
cout<<ok<<endl;
else cout<<"Not sure"<<endl;
}
return 0;
}