zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    【C#进阶系列】06 类型和成员基础
    纪中5日T1 1564. 旅游
    纪中17日T1 2321. 方程
    纪中17日T2 2322. capacitor
    纪中10日T1 2313. 动态仙人掌
    纪中14日听课小结 图论 最短路 二分图 差分约束
    一个抓猫的游戏 消遣GAME 持续更新中!
    洛谷P1464 Function  HDU P1579 Function Run Fun
    洛谷P1976 鸡蛋饼
    纪中12日T1 2307. 选择
  • 原文地址:https://www.cnblogs.com/wally/p/3040780.html
Copyright © 2011-2022 走看看