题目链接

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

分析:

循环所有的思维数,将每一位数与题目上给出的数据进行判断,如果满足所有的条件的数有且仅有一个的话,才是所求的答案,没有或则有多个都是不确定。

代码:

#include<stdio.h>
#include<iostream>
using namespace std;
typedef struct res
{
int a;///猜对的数字的个数
int b;///猜对数字的个数且位置也正确的个数
} Res;
Res judge(int an,int gu)
{
int i;
int ans[4];///存放an的每一位数字
int guess[4];///存放gu的每一位数字
Res r;
r.a = 0;
r.b = 0;
int n[10] = {0};
for(i = 3; i >= 0; i--)///将an和gu分解
{
ans[i] = an % 10;
an = an / 10;
guess[i] = gu % 10;
gu = gu/10;
} for(i = 0; i <4; i++)
{
n[ans[i]]++;///ans中有哪几个数字
if(ans[i] == guess[i])///数字相同且位置相同
r.b++;
}
for(i = 0; i < 4; i++)
{
if(n[guess[i]] > 0)
{
n[guess[i]]--;
r.a++;///数字相同
}
}
return r;
}
int main()
{
int N;
int i,m;
int n;
int f;
Res re;
int key;
int text[101][3];
//freopen("in.txt","r",stdin);
while(scanf("%d",&N) && N != 0)
{
for(i = 0; i < N; i++)
{
scanf("%d%d%d",&text[i][0],&text[i][1],&text[i][2]);
}
f=0;
for(i = 1000; i < 10000; i++)///遍历所有的四位数 若这个数存在,必定满足所有所猜的数
{
n = 0;
for(m = 0 ; m < N; m++)
{
re=judge(i,text[m][0]);
if(re.a == text[m][1] && re.b == text[m][2])///满足其中一个
n++;
else
break;
}
if(n==N)///满足所有
{
key=i;///这数个数就是正确的数
f++;///有多个数满足条件
}
if(f>1)///有多个数满足条件
break;
}
if(f==1)
printf("%d\n",key);
else
printf("Not sure\n");
}
return 0;
}

最新文章

  1. Eclipse构建Maven项目
  2. js正则表达式替换空格
  3. redis.conf
  4. Android SharedPreferences 见解
  5. C#中的 序列化和反序列化
  6. 9月1日,请记得备好名片来PechaKucha Night和大家“闲聊” | Hi!设计
  7. cocos2d-html5 碰撞检測的几种方法
  8. java验证控制的方法
  9. redis下载安装以及添加服务
  10. 【BZOJ2882】工艺(后缀自动机)
  11. 转 原生js canvas实现苹果电脑mac OS窗口最小化效果
  12. Django-rest-framework 接口实现 ModelSerializer 使用
  13. Flask----基础
  14. Python3 tkinter基础 Canvas create_rectangle 画虚边的矩形 create_oval 画椭圆形 圆形
  15. 操作 frames 框架下的 dom 内容。
  16. Linux引导启动顺序
  17. 关于struts2输出excel表
  18. Storm 第三章 Storm编程案例及Stream Grouping详解
  19. Redis有序集内部实现原理分析(二)
  20. JavaWeb基础【1】—— Tomcat

热门文章

  1. 【第八周】【新蜂】新NABCD
  2. 【Leetcode】322. Coin Change
  3. php opensll加解密类
  4. Centos 7 环境下,如何使用 Apache 实现 SSL 虚拟主机 双向认证 的详细教程:
  5. 按着shift键对dbgrid进行多条记录选择的问题(50分)
  6. node+express搭建个人网站(1)
  7. FragmentTransaction add 和 replace 区别 转
  8. selenium学习网址
  9. CPP 替代 PIL 图片处理(缩略图生成)
  10. [BZOJ4870][Shoi2017]组合数问题 dp+矩阵乘