题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1172
题解:由于是四位数,所以可以直接从1000-9999开始枚举,如果只有一个数符合所有案例数则为解,否则Not sure
#include <bits/stdc++.h>
using namespace std;
int tmp[5];
struct node
{
char b[5];
int t1,t2;
}a[105];
int main(void)
{
int n;
while(~scanf("%d",&n)&&n)
{
for(int i=0;i<n;i++)
scanf("%s %d %d",a[i].b,&a[i].t1,&a[i].t2);
int cnt = 0;
int ans = 0;
for(int i=1000;i<10000;i++)
{
tmp[0] = i/1000; tmp[1] = (i/100)%10;
tmp[2] = (i/10)%10; tmp[3] = i%10;
int flag = 1;
for(int j=0;j<n;j++)
{
int t1=0,t2=0;
int vis[10];
memset(vis,0,sizeof(vis));
for(int k=0;k<4;k++)
{
if(tmp[k]==a[j].b[k]-'0')
t2++;
vis[tmp[k]]++;
}
for(int k=0;k<4;k++)
{
if(vis[a[j].b[k]-'0'])
{
vis[a[j].b[k]-'0']--;
t1++;
}
}
if(t1!=a[j].t1 || t2!=a[j].t2)
{
flag = 0;
break;
}
}
if(flag)
{
ans = i;
cnt++;
}
}
if(cnt!=1)
{
puts("Not sure");
continue;
}
printf("%d\n",ans);
}
return 0;
}