蒟蒻的自我拯救。。。。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
struct node{int num,get,cor;}op[500];
int a[10],b[10],n,flag[10];
int judge(int k, int number)
{
int num1[50], num2[50];
int vis[50];
memset(vis,0,sizeof(vis));
num1[1] = op[k].num / 1000;
num1[2] = (op[k].num % 1000) / 100;
num1[3] = (op[k].num % 100) / 10;
num1[4] = (op[k].num % 10);
num2[1] = number / 1000;
num2[2] = (number % 1000) / 100;
num2[3] = (number % 100) / 10;
num2[4] = (number % 10);
int count = 0;
for(int i = 1; i <= 4; i++) //相同位置相同的数
{
if(num1[i] == num2[i])
count++;
}
if(count != op[k].cor)
return 0;
count = 0;
for(int i = 1; i <= 4; i++)
{
for(int j = 1; j <= 4; j++)
{
if(num1[i] == num2[j] && !vis[j])
{
vis[j] = 1;
count++;
break;
}
}
}
if(count != op[k].get)
return 0;
return 1;
}
int main()
{
while(scanf("%d",&n))
{
if(n==0)
break;
int fans=0;
int flaga;
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&op[i].num,&op[i].get,&op[i].cor);
}
for(int i=1000;i<=9999;i++)
{
bool tt=1;
for(int j=1;j<=n;j++)
{
if(!judge(j,i))
{
tt=0;
break;
}
}
if(tt)
{
fans++;
flaga=i;
}
}
if(fans==1)
{
printf("%d\n",flaga);
}
else
printf("Not sure\n");
}
return 0;
}