码迷,mamicode.com
首页 > 其他好文 > 详细

猜数字

时间:2018-11-22 00:06:20      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:数据   ret   猜数字   strong   使用   \n   枚举   clu   stdio.h   

题目描述:
  游戏的规则如下:计算机随机产生一个4位数,然后玩家猜这个4位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确位置上。
  输入数据有多组。每组的第一行为一个正整数N(1≤N≤100),表示在这段对话中共有N次回答。在接下来的N行中,每行三个整数A、B、C。gameboy猜这个4位数为A,然后计算机回答猜对了B个数字,其中C个在正确的位置上。当N=0时,则输入数据结束。
  如果根据这段对话能确定该4位数,在输出该4位数;若不能确定,则输出“Not sure”。
输入样例:
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
输出样例:
3585
Not sure
题目解析:
  这道题目可以从正面入手,4位数总共不到$10^4$,而数据也只有100组,所以可以采用枚举法,对每个4位数进行N次判断,如果这个数全部符合,则它有可能是计算机所产生的那个数,如果有多个这样的数,显然不能确定。
参考代码:

#include "stdio.h"
int n,a[101],b[101],c[101];
int ans,num;
_Bool check(int x,int y)
{
    //4位数x是否符合第y次问答的结果
    int s[4],t[4],pa=a[y],pb=b[y],pc=c[y];
    for(int i =3;i >= 0;i--)
        s[i] = x%10,x/=10,t[i] = pa%10,pa/=10;
    //检查猜对的数字个数和在正确位置上的个数是否符合
    int correct_num = 0,correct_pos = 0;
    for (int i = 0; i < 4; ++i)
        if(s[i] == t[i])
            correct_pos++;//在正确位置上的个数
    for(int i = 0;i < 4; i++)
        for(int j = 0;j < 4;j++)
            if(t[j] == s[i])
            {
                correct_num++;//猜对的数字个数
                t[j] = -1;//防止同一个数字被重复使用
                break;
            }
    return correct_num == pb && correct_pos == pc;
}

int main(int argc, char const *argv[])
{
    while(scanf("%d",&n) && n)//该组有n次回答
    {
        for (int i = 0; i < n; ++i)
            scanf("%d %d %d",&a[i],&b[i],&c[i]);
        num = 0;//枚举范围内的每个值,判断是否符合条件
        for(int i = 1000;i < 10000 && num < 2;i++)
        {
            int j = 0;
            for(;j < n;j++)
                if(!check(i,j))
                    break;
            if(j == n)
                num++,ans = i;
        }
        if(num == 1)
                printf("%d\n", ans);//题目要求有且只有一组符合
        else 
            printf("Not sure\n");
    }
    return 0;
}

猜数字

标签:数据   ret   猜数字   strong   使用   \n   枚举   clu   stdio.h   

原文地址:https://www.cnblogs.com/Iversonx/p/9998358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!