本文主要是介绍hdu 1172猜数字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接: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;
}
这篇关于hdu 1172猜数字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!