hdu 1172
程序员文章站
2022-05-22 11:35:09
...
主题思想:暴力枚举,对每一个四位数进行判断,是否全部满足猜到的情况。
AC代码:
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=105;
struct Node{
int a;
int b; //the number of that a has equal with the dst number
int c; //the number in the right position
};
Node node[maxn];
int realNum[5];
int guessNum[5];
bool judge(int real,int j){
realNum[1]=real/1000;
realNum[2]=(real%1000)/100;
realNum[3]=(real%100)/10;
realNum[4]=(real%10);
guessNum[1]=node[j].a/1000;
guessNum[2]=(node[j].a%1000)/100;
guessNum[3]=(node[j].a%100)/10;
guessNum[4]=(node[j].a%10);
int cnt=0;
for(int i=1;i<=4;i++){
if(realNum[i]==guessNum[i])cnt++;
}
if(cnt!=node[j].c) return false;
bool mark[5];
for(int i=1;i<=4;i++) mark[i]=false;
cnt=0;
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++){
if(realNum[i]==guessNum[j]&&!mark[j]){
cnt++;
mark[j]=true;
break; // break to fine the next i
}
}
}
if(cnt!=node[j].b)return false;
return true;
}
int main()
{
int n;
bool flag=true;
int cnt=0;
int ans=0;
while(scanf("%d",&n)!=EOF){
if(n==0)break;
for(int i=1;i<=n;i++){
scanf("%d%d%d",&node[i].a,&node[i].b,&node[i].c);
}
cnt=0;
ans=0;
// mei ju
for(int i=1000;i<=9999;i++){
flag=true;
for(int j=1;j<=n;j++){
if(!judge(i,j)){
flag=false;
break;
}
}
if(flag){
cnt++;
ans=i;
}
}
if(cnt==1){
printf("%d\n",ans);
}else{
printf("Not sure\n");
}
}
return 0;
}
上一篇: HDU 1172
下一篇: PHP异步执行实现的四种方法详解
推荐阅读
-
hdu--1232 继续通畅工程
-
HDU 2256Problem of Precision(矩阵快速幂)
-
湫湫系列故事——设计风景线 HDU - 4514
-
HDU6315 Naive Operations(线段树 复杂度分析)
-
【题解】hdu1506 Largest Rectangle in a Histogram
-
C - Monkey and Banana HDU 1069( 动态规划+叠放长方体)
-
HDU 1052(田忌赛马 贪心)
-
hdu-1338 game predictions(贪心题)
-
致初学者(四):HDU 2044~2050 递推专项习题解
-
C语言BFS--Find a way(Hdu 2612)