hdu 1172 猜数字

    xiaoxiao2021-03-25  134

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1172

    依照题意暴力枚举。

    #include<cstdio> #include<cstring> using namespace std; struct node { int a,b,c; }num[101]; int num1[5],num2[101]; int mark[5]; int main() { int n,ans,flag,m; while(scanf("%d",&n)&&n) { for(int i=1;i<=n;i++) scanf("%d%d%d",&num[i].a,&num[i].b,&num[i].c); flag=m=0; for(int i=1000;i<=9999;i++) { int count=0; flag=0; num2[4] = i; num2[3] = (i/10); num2[2] = (i/100); num2[1] = (i/1000);//枚举i,获得各位数 for(int l=1;l<=n;l++)//依次与输入的n个数比较,全部符合条件,则答案数量加一 { memset(mark,0,sizeof(mark)); count=0; num1[4] = num[l].a; num1[3] = (num[l].a/10); num1[2] = (num[l].a/100); num1[1] = (num[l].a/1000); for(int j=1;j<=4;j++) if(num1[j]==num2[j]) { count++; } if(count!=num[l].c) { flag=1; break; } count = 0; for(int j=1;j<=4;j++) for(int k=1;k<=4;k++) if(num1[j]==num2[k]&&!mark[k]) { count++; mark[k]=1; break; } if(count!=num[l].b) { flag=1; break; } } if(flag)continue;//不符,继续枚举下一个数 else { m++; ans=i; } } if(m==1)//若答案唯一,则是唯一确定的,否则不能确定 printf("%d\n",ans); else printf("Not sure\n"); } }

    转载请注明原文地址: https://ju.6miu.com/read-7609.html

    最新回复(0)