zoukankan      html  css  js  c++  java
  • hdu1172(枚举)

    中文题,题意就不解释了。

    思路:因为答案一定是四位数,所以只要枚举1000-9999,如果符合所有条件,那么保存一下答案,记录一下答案的个数,如果答案是唯一的,那么输出它,否则,就不确定。

    代码如下:

     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 struct node{
     5     int num,t,p;
     6 };
     7 node a[101];
     8 int check(int i,int j)
     9 {
    10     int b[4],c[4],t=0,d=0,v[10]={0};
    11     while(i)//分解每一位数 
    12     {
    13         b[t++]=i%10;
    14         v[i%10]++;//记录当前位置的数出现过几次 
    15         i/=10;
    16     }
    17     int p=a[j].num;
    18     while(p) //同上 
    19     {
    20         c[d++]=p%10;
    21         p/=10;
    22     }
    23     int same=0,pos=0;
    24     for(int k=0;k<4;k++)
    25     {
    26         if(v[c[k]])//判断相同数字的个数 
    27         {
    28             same++;
    29             v[c[k]]--;
    30         }
    31     }
    32     for(int k=0;k<4;k++)//判断相同位置的个数 
    33     {
    34         if(c[k]==b[k])
    35         pos++;
    36     }
    37     if(same==a[j].t&&pos==a[j].p)//如果满足这两个条件返回真值 
    38     return 1;
    39     return 0;
    40 }
    41 int main()
    42 {
    43     int n;
    44     while(cin>>n)
    45     {
    46         if(n==0)
    47         break;
    48         for(int i=0;i<n;i++)
    49         cin>>a[i].num>>a[i].t>>a[i].p;
    50         int flag=0,ans;
    51         for(int i=1000;i<=9999;i++)
    52         {
    53             int t=0;//用于记录满足了几个条件 
    54             for(int j=0;j<n;j++)
    55             {
    56                 if(check(i,j))//判断是否满足条件 
    57                 t++;
    58             }
    59             if(t==n)//如果所有条件都满足 
    60             {
    61                 ans=i;
    62                 flag++;//满足条件的个数 
    63             }
    64         }
    65         if(flag==1)//如果答案唯一 
    66         cout<<ans<<endl;
    67         else
    68         cout<<"Not sure"<<endl;
    69     }
    70     return 0;
    71 }
  • 相关阅读:

    es -Aggregations
    散列表学习
    SpringCloud (一)——基本的搭建
    1.5 中不支持 lambda 表达 java
    区块链 (一)——基础
    线性表
    Redis(四)——消息队列
    rune is alias of int32
    wall time
  • 原文地址:https://www.cnblogs.com/spongeb0b/p/9329391.html
Copyright © 2011-2022 走看看