zoukankan      html  css  js  c++  java
  • hdu 1172(暴力题)

    从0000-9999 枚举判断一遍, 如果只有一个数字满足则输出,否则输出Not  sure


                   猜数字


     

    Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 1617    Accepted Submission(s): 925


    Problem Description
    猜数字游戏是gameboy最喜欢的游戏之一。游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上。
    比如计算机随机产生的数字为1122。如果玩家猜1234,因为1,2这两个数字同时存在于这两个数中,而且1在这两个数中的位置是相同的,所以计算机会告诉玩家猜对了2个数字,其中一个在正确的位置。如果玩家猜1111,那么计算机会告诉他猜对2个数字,有2个在正确的位置。
    现在给你一段gameboy与计算机的对话过程,你的任务是根据这段对话确定这个四位数是什么。
     
    Input
    输入数据有多组。每组的第一行为一个正整数N(1<=N<=100),表示在这段对话中共有N次问答。在接下来的N行中,每行三个整数A,B,C。gameboy猜这个四位数为A,然后计算机回答猜对了B个数字,其中C个在正确的位置上。当N=0时,输入数据结束。
     
    Output
    每组输入数据对应一行输出。如果根据这段对话能确定这个四位数,则输出这个四位数,若不能,则输出"Not sure"。
     
    Sample Input
    6 4815 2 1 5716 1 0 7842 1 0 4901 0 0 8585 3 3 8555 3 2 2 4815 0 0 2999 3 3 0
     
    Sample Output
    3585 Not sure
     
    Author
    lwg
     
     
    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    using namespace std;
    struct node
    {
        int str[5];
        int cnt,num;
    }g[110];
    
    int mark[10];
    
    
    int main()
    {
        int n;
        while(scanf("%d",&n)&&n)
        {
            for(int i=0;i<n;i++)
            {
                int tmp;
                scanf("%d",&tmp);
                for(int j=3;j>=0;j--)
                {
                    g[i].str[j]=tmp%10;
                    tmp/=10;
                }
                scanf("%d%d",&g[i].cnt,&g[i].num);
            }
            int flag=0;
            int sum=0;
            int ans[5];
            for(int a=0;a<10;a++)
                for(int b=0;b<10;b++)
                    for(int c=0;c<10;c++)
                        for(int d=0;d<10;d++)
                        {                    
                            flag=0;
                            memset(mark,0,sizeof(mark));
                            mark[a]++; mark[b]++; mark[c]++;
                            mark[d]++;
                            int mark1[10];
                            for(int i=0;i<n;i++)
                            {
                                for(int j=0;j<10;j++)
                                    mark1[j]=mark[j];
                                int tcnt=0;
                                for(int j=0;j<4;j++)
                                {
                                    if(mark1[g[i].str[j]]!=0)
                                    {
                                        tcnt++;
                                        mark1[g[i].str[j]]--;
                                    }
                                }
                                if(tcnt!=g[i].cnt)
                                {
                                    flag=1;
                                    break;
                                }
                            }
                            if(flag==1) continue;;
                            int tcnt=0;
                            for(int i=0;i<n;i++)
                            {
                                tcnt=0;
                                if(g[i].str[0]==a) tcnt++;
                                if(g[i].str[1]==b) tcnt++;
                                if(g[i].str[2]==c) tcnt++;
                                if(g[i].str[3]==d) tcnt++;
                                if( tcnt != g[i].num )
                                {
                                    flag=1;
                                    break;
                                }
                            }
                            if(flag==1) continue;
                            sum++;
                            ans[0]=a; ans[1]=b; ans[2]=c; ans[3]=d;
                        }
            if(sum!=1) printf("Not sure\n");
            else 
            {
                int tmp=0;
                for(int i=0;i<4;i++)
                    tmp=tmp*10+ans[i];
                printf("%04d\n",tmp);
            }
        }
        return 0;
    }
     
  • 相关阅读:
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结v2
    JS设置cookie、读取cookie、删除cookie
    Atitit 图像处理30大经典算法attilax总结
    Atitit数据库层次架构表与知识点 attilax 总结
    Atitit 游戏的通常流程 attilax 总结 基于cocos2d api
    Atitti css transition Animation differ区别
    Atitit 图像清晰度 模糊度 检测 识别 评价算法 源码实现attilax总结
    Atitit 全屏模式的cs桌面客户端软件gui h5解决方案 Kiosk模式
    Atitit 混合叠加俩张图片的处理 图像处理解决方案 javafx blend
    Atitit  rgb yuv  hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别
  • 原文地址:https://www.cnblogs.com/chenhuan001/p/2912906.html
Copyright © 2011-2022 走看看