您的位置:首页 > 其它

hdu 1172 猜数字(暴力枚举)

2014-01-23 23:24 260 查看
题目

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

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

//1:

#include<stdio.h>
struct tt
{
char a[5],b[2],c[2];
}e[105];
int main()
{
int n,i,count,j,num[4],flag,a1,a2,a3,a4;
bool yi,mark[4];
while(scanf("%d",&n),n)
{
for(i=0;i<n;i++)scanf("%s%s%s",e[i].a,e[i].b,e[i].c);
yi=false;
num[0]=num[1]=num[2]=num[3]=flag=0;
for(j=1;j<10000;j++)
{
for(i=0;i<n;i++)
{
count=0;
for(int ii=0;ii<4;ii++)
if(num[ii]==e[i].a[ii]-'0')count++;
if(count!=e[i].c[0]-'0')break;

for(int q=0;q<4;q++)mark[q]=false;

count=0;
for(int w=0;w<4;w++)
for(int r=0;r<4;r++)
if(num[w]==e[i].a[r]-'0'&&!mark[r])
{mark[r]=true,count++;break;}
if(count!=e[i].b[0]-'0')break;
}
if(i==n){
flag++;
if(!yi)a1=num[0],a2=num[1],a3=num[2],a4=num[3],yi=true;
}
num[3]++;
if(num[3]>9)num[2]++,num[3]=num[3]%10;    //原来之前是这里细节出错了,要注意哦
if(num[2]>9)num[1]++,num[2]=num[2]%10;
if(num[1]>9)num[0]++,num[1]=num[1]%10;
num[0]=num[0]%10;
}
if(flag==1)printf("%d%d%d%d\n",a1,a2,a3,a4);
else printf("Not sure\n");
}
return 0;
}


View Code
//不过2很神奇的是0毫秒,原因不详
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: