hdu 1172(模拟、枚举)

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

思路:一开始看这道题的时候觉得没什么思路。。。暴搜吗????然后仔细分析了一下,觉得不行。。。然后网上搜了一下。。。orz。。。枚举啊!!!把最基本的给忽略了。。。好吧,就是枚举1000-9999之间的数,然后把每个数都与给定的几个数以及条件进行比较,如果都符合,那么就记录个数。。。最后,看有多少个数满足条件。。。题目的意思是说只有一个数满足条件。。。

View Code
 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<cstring>
 5 using namespace std;
 6 const int MAXN=100;
 7 struct Node{
 8     int a,b,c;
 9 }node[MAXN];
10 
11 bool Judge(int k,int number){
12     int num1[5],num2[5];
13     bool mark[5];
14     for(int i=1;i<=4;i++)mark[i]=false;
15 
16     num1[1]=node[k].a/1000;
17     num1[2]=(node[k].a%1000)/100;
18     num1[3]=(node[k].a%100)/10;
19     num1[4]=(node[k].a%10);
20 
21     num2[1]=number/1000;
22     num2[2]=(number%1000)/100;
23     num2[3]=(number%100)/10;
24     num2[4]=(number%10);
25 
26     int count=0;
27     for(int i=1;i<=4;i++){
28         if(num1[i]==num2[i])count++;
29     }
30     if(count!=node[k].c)return false;
31 
32     count=0;
33     for(int i=1;i<=4;i++){
34         for(int j=1;j<=4;j++){
35             if(num1[i]==num2[j]&&!mark[j]){
36                 mark[j]=true;
37                 count++;
38                 break;
39             }
40         }
41     }
42     if(count!=node[k].b)return false;
43 
44     return true;
45 }
46 
47 
48 
49 int main(){
50     int n;
51     while(~scanf("%d",&n)&&n){
52         for(int i=1;i<=n;i++){
53             scanf("%d%d%d",&node[i].a,&node[i].b,&node[i].c);
54         }
55         int count=0,result;
56         bool flag=true;
57         for(int num=1000;num<=9999;num++){
58             for(int i=1;i<=n;i++){
59                 flag=Judge(i,num);
60                 if(!flag)break;
61             }
62             if(flag){
63                 count++;
64                 result=num;
65             }
66         }
67         if(count==1){
68             printf("%d\n",result);
69         }else 
70             printf("Not sure\n");
71     }
72     return 0;
73 }

 

posted @ 2013-04-24 18:44  ihge2k  阅读(992)  评论(0编辑  收藏  举报