HDU 1172 猜数字 (模拟)
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;
}
HDU 1172 猜数字 (模拟)的更多相关文章
- HDU 1172 猜数字(DFS)
猜数字 Time Limit:10000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- hdu 1172 猜数字
猜数字 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- hdu - 1172 猜数字 (思维题)
http://acm.hdu.edu.cn/showproblem.php?pid=1172 这个题换一种想法,可以找出四位数中所有满足条件的数看是否只有一个. #include <iostre ...
- hdu 1172 猜数字(暴力枚举)
题目 这是一道可以暴力枚举的水题. //以下两个都可以ac,其实差不多一样,呵呵 //1: //4 wei shu #include<stdio.h> struct tt { ],b[], ...
- HDU 2178.猜数字【分析能力练习】【读题能力练习】【8月10】
猜数字 Problem Description A有1数m.B来猜.B每猜一次,A就说"太大"."太小"或"对了" . 问B猜n次能够猜到的 ...
- [HDOJ] 1172.猜数字
Problem Description 猜数字游戏是gameboy最喜欢的游戏之一.游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么.每 猜一个数,计算机都会告诉玩家猜对几个数 ...
- HDOJ(HDU) 2178 猜数字(题意有点难理解、、、)
Problem Description A有1数m,B来猜.B每猜一次,A就说"太大","太小"或"对了" . 问B猜n次可以猜到的最大数. ...
- HDU1172猜数字 [模拟]
1.题意 任务是猜一个四位数,每次尝试后会给出这次猜中了几个数字和猜中了几个位置,求能否根据尝试的记录给出答案 2.分析 数据给出查询次数和每次查询的数及其有几个数和几个位置符合,值得注意的是,猜对的 ...
- HDU 2178 猜数字
题解:设猜到的最大的数是h,在1到h间,你最多只要猜log2(h)+1(取整)次,所以易知==>h=2^m-1.即猜m次,能猜到的最大的数为2^m-1. #include <cstdio& ...
随机推荐
- Beta 阶段项目计划
Beta 阶段项目计划 NewTeam 目标 实现用户数量的目标. 在多个平台发布 完成稳定运行.界面优雅的客户端 充分测试,避免发布后出现bug影响用户使用 及时更新开发文档 合理安排时间,避免和其 ...
- 敏捷冲刺Day7
一. 每日会议 1. 照片 2. 昨日完成工作 3. 今日完成工作 第一阶段的测试 全部队员对各个方面进行深入检查,找出细节问题 4. 工作中遇到的困难 工作中的困难:对自己做出来的产品进行否定.以求 ...
- css3 flex属性flex-grow、flex-shrink、flex-basis学习笔记
最近在研究css3的flex.遇到的flex:1;这一块,很是很纠结,flex-grow.flex-shrink.flex-basis始终搞不清,最经搜集了大量的介绍,应该能算是明白了.网上大部分解释 ...
- java 常量 jvm在编译期能确定常量的 所以相等 但不能确定变量的范围 所以变量相加会产生新的
- (转)rabbitmq的web管理界面无法使用guest用户登录
转至http://www.cnblogs.com/mingaixin/p/4134920.html 安装最新版本的rabbitmq(3.3.1),并启用management plugin后,使用默认的 ...
- C++解析(1):C到C++的升级
0.目录 1.C与C++的关系 2.C到C++的升级 2.1 语言的实用性 2.2 register关键字 2.3 同名的全局变量 2.4 struct关键字 2.5 int f() 与 int f( ...
- Fdisk 分区详解
Fdisk 分区详解 来源 http://blog.itpub.net/20674423/viewspace-722812/ 1. 通过Fdisk查看系统分区详细信息: Fdi ...
- loj2541 「PKUWC2018」猎人杀 【容斥 + 分治NTT】
题目链接 loj2541 题解 思路很妙啊, 人傻想不到啊 觉得十分难求,考虑容斥 由于\(1\)号可能不是最后一个被杀的,我们容斥一下\(1\)号之后至少有几个没被杀 我们令\(A = \sum\l ...
- 【bzoj2006】超级钢琴
Portal --> bzoj2006 Solution 一开始看错题了..没有看到编号连续然后愣了好久== 首先肯定是找最大的\(K\)个啦,然后具体怎么找的话..没有什么特别好的办法那就 ...
- win7系统用笔记本共享wifi热点 让手机免费上网
之前一直在用这个方法把自己的笔记本变成一个wifi热点,让手机也可以直接连wifi上网,节省网费和路由器购买费. 其实就是开启了windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP ...