zoukankan      html  css  js  c++  java
  • HDOJ --1172

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<string>
     5 #include<fstream>
     6 #include<algorithm>
     7 #define MAXN 105
     8 using namespace std; 
     9 typedef struct{
    10     int num[10], a, b;
    11     char str[10]; 
    12     void Switch(){
    13         for(int i = 0; i < 4; i ++)
    14             num[i] = str[i]-'0'; 
    15     }
    16 }Gusse; 
    17 Gusse gg[MAXN];
    18 int ans[10], target[10], flag, N; 
    19 bool Is_In_num(int i){
    20     int num1[10], num2[10], cnt = 0; 
    21     memset(num1, 0, sizeof(num1)); 
    22     memset(num2, 0, sizeof(num2)); 
    23     for(int j = 0; j < 4; j ++) num1[ans[j]]++; 
    24     for(int j = 0; j < 4; j ++) num2[gg[i].num[j]]++; 
    25     for(int j = 0; j < 10;j ++) if(num1[j] && num2[j]) cnt += min(num1[j], num2[j]); 
    26     return cnt == gg[i].a; 
    27 }
    28 bool Is_Ok_num(int i){
    29     int cnt = 0; 
    30     for(int j = 0; j < 4; j ++)
    31         if(ans[j] == gg[i].num[j]) cnt++; 
    32     return cnt == gg[i].b; 
    33 }
    34 bool OK(){
    35     for(int i = 0; i < N; i ++)
    36         if(!Is_In_num(i) || !Is_Ok_num(i)) return false;
    37     return true; 
    38 }
    39 void dfs(int cnt){
    40     if(cnt == 4){
    41         if(OK()){
    42             flag++; 
    43             for(int i = 0; i < 4; i ++) target[i] = ans[i]; 
    44         }
    45         return ; 
    46     }
    47     for(int i = 0; i < 10; i ++){
    48         if((cnt + i)){
    49             ans[cnt] = i; 
    50             dfs(cnt+1); 
    51         }
    52     }
    53 }
    54 int main(){
    55     freopen("in.c", "r", stdin); 
    56     while(~scanf("%d", &N) && N){
    57         for(int i = 0; i < N; i ++){
    58             scanf("%s%d%d", gg[i].str, &gg[i].a, &gg[i].b); 
    59             gg[i].Switch(); 
    60         }
    61         flag = 0; 
    62         dfs(0); 
    63         if(flag != 1) printf("Not sure
    "); 
    64         else{
    65             for(int i = 0; i < 3; i ++) printf("%d", target[i]); 
    66             printf("%d
    ", target[3]); 
    67         }
    68     }
    69     return 0; 
    70 }
  • 相关阅读:
    【181】IDL 代码从 Windows 转移到 Linux
    异步加载图片到GridView上,防止OOM
    10881
    AngularJS的开发工具---yeoman 简易安装
    AIX操作oracle
    hdu2817 A sequence of numbers
    FZU 2104 (13.11.28)
    HDU 1231 (13.12.2)
    Java 23种设计模式详尽分析与实例解析之一--创建型模式
    JSP视频
  • 原文地址:https://www.cnblogs.com/anhuizhiye/p/3673275.html
Copyright © 2011-2022 走看看