题目

这是一道可以暴力枚举的水题。

//以下两个都可以ac,其实差不多一样,呵呵

//1:

//4 wei shu
#include<stdio.h>
struct tt
{
char a[],b[],c[];
}e[]; int main()
{
int n,i,count,j,num[],mark[],yi,flag,a1,a2,a3,a4;
while(scanf("%d",&n),n)
{
for(i=;i<n;i++)
{
scanf("%s%s%s",e[i].a,e[i].b,e[i].c);
}
yi=;flag=;
num[]=;num[]=num[]=num[]=;
for(j=;j<;j++)
{
for(i=;i<n;i++)
{
count=;
for(int ii=;ii<;ii++)
if(num[ii]==e[i].a[ii]-'')
count++;
if(count!=e[i].c[]-'')break; for(int q=;q<;q++)mark[q]=; count=;
for(int ii=;ii<;ii++)
{
for(int jj=;jj<;jj++)
{
if(num[ii]==e[i].a[jj]-''&&mark[jj]==)
{mark[jj]=,count++;break;}
}
}
if(count!=e[i].b[]-'')break;
}
if(i==n)
{
flag++;
if(yi==)a1=num[],a2=num[],a3=num[],a4=num[],yi=;
}
num[]++;
if(num[]>)//原来之前是这里细节出错了,要注意哦
num[]++,num[]=num[]%;
if(num[]>)
num[]++,num[]=num[]%;
if(num[]>)
num[]++,num[]=num[]%;
num[]=num[]%;
}
if(flag==)
printf("%d%d%d%d\n",a1,a2,a3,a4);
else
printf("Not sure\n");
}
return ;
}

//2:

#include<stdio.h>
struct tt
{
char a[],b[],c[];
}e[];
int main()
{
int n,i,count,j,num[],flag,a1,a2,a3,a4;
bool yi,mark[];
while(scanf("%d",&n),n)
{
for(i=;i<n;i++)scanf("%s%s%s",e[i].a,e[i].b,e[i].c);
yi=false;
num[]=num[]=num[]=num[]=flag=;
for(j=;j<;j++)
{
for(i=;i<n;i++)
{
count=;
for(int ii=;ii<;ii++)
if(num[ii]==e[i].a[ii]-'')count++;
if(count!=e[i].c[]-'')break; for(int q=;q<;q++)mark[q]=false; count=;
for(int w=;w<;w++)
for(int r=;r<;r++)
if(num[w]==e[i].a[r]-''&&!mark[r])
{mark[r]=true,count++;break;}
if(count!=e[i].b[]-'')break;
}
if(i==n){
flag++;
if(!yi)a1=num[],a2=num[],a3=num[],a4=num[],yi=true;
}
num[]++;
if(num[]>)num[]++,num[]=num[]%; //原来之前是这里细节出错了,要注意哦
if(num[]>)num[]++,num[]=num[]%;
if(num[]>)num[]++,num[]=num[]%;
num[]=num[]%;
}
if(flag==)printf("%d%d%d%d\n",a1,a2,a3,a4);
else printf("Not sure\n");
}
return ;
}

//不过2很神奇的是0毫秒,原因不详

05-07 15:07