猜数字

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

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

本题采用的是暴力搜索法,在1000至9999中寻找满足已经给出的那些数的情况,看看是不是每一个都符合,如果有这样的数且在1000到9999中只有一个,那么就是这个数,如果有多个,那么这个数就是不确定的数

#include<stdio.h>
#include<string.h>
struct node
{
int number,lock,sum;
}per[150];
int Check(int n,int m)
{
int a[4],b[4],sign[4],i,j,sumn;
for(i=0;i<4;i++) sign[i]=0;
a[0]=n/1000;
a[1]=(n/100)%10;
a[2]=(n/10)%10;
a[3]=n%10;
b[0]=per[m].number/1000;
b[1]=(per[m].number/100)%10;
b[2]=(per[m].number/10)%10;
b[3]=per[m].number%10;
sumn=0;
for(i=0;i<4;i++)//判断位置相同数
{
if(a[i]==b[i])
sumn++;
}
if(sumn!=per[m].lock) return 0;
sumn=0;
for(i=0;i<4;i++)//判断数字相同数
{
for(j=0;j<4;j++)
{
if(a[i]==b[j]&&sign[j]==0)//Bug:只能比较一次
{sumn++;sign[j]=1;break;}
}
}
if(sumn!=per[m].sum) return 0;
return 1;
}
int main()
{
int i,j,n,flag,Sum,num;
while(scanf("%d",&n),n!=0)
{
for(i=0;i<n;i++)
scanf("%d%d%d",&per[i].number,&per[i].sum,&per[i].lock);
flag=0;Sum=0;
for(i=1000;i<=9999;i++)
{
for(j=0;j<n;j++)
{
flag=Check(i,j);
if(!flag)break;
}
if(flag==1)
{Sum++;num=i;}
}
if(Sum==1)
printf("%d\n",num);
else
printf("Not sure\n");
memset(per,0,sizeof(per));
}
return 0;
}

HDU1172 猜数字相关推荐

  1. HDU1172 猜数字【暴力+进制】

    猜数字 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  2. hdu1172 猜数字(java)

    每日一看 题意: /** * @param args * 猜数字游戏是gameboy最喜欢的游戏之一.游戏的规则是这样的: * 计算机随机产生一个四位数,然后玩家猜这个四位数是什么. * 每猜一个数, ...

  3. hdu1172猜数字

    猜数字 Problem Description 猜数字游戏是gameboy最喜欢的游戏之一.游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么.每猜一个数,计算机都会告诉玩家猜对 ...

  4. HDU-1172 猜数字

    猜数字游戏是gameboy最喜欢的游戏之一.游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么.每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上. 比如计 ...

  5. HDU1172猜数字 [模拟]

    1.题意 任务是猜一个四位数,每次尝试后会给出这次猜中了几个数字和猜中了几个位置,求能否根据尝试的记录给出答案 2.分析 数据给出查询次数和每次查询的数及其有几个数和几个位置符合,值得注意的是,猜对的 ...

  6. hdu---1172猜数字

    题意: 系统生成一个四位数,你猜n次,每次告诉你对的数字有几个,和对的位置有几个.n次之后问你能否确定这个数 题目链接 tips: 1.枚举法,正难则反,由条件去确定太繁琐时,可以枚举去验证每个条件 ...

  7. HDU-1172 猜数字 广搜

    http://acm.hdu.edu.cn/showproblem.php?pid=1172 这题要换个思维,不要想着如何通过已有的条件来得到正确的值,而是枚举0000-9999这10000个数,看满 ...

  8. 暴力——猜数字(hdu1172)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1172 题目描述: 猜数字游戏是gameboy最喜欢的游戏之一.游戏的规则是这样的:计算机随机产生一个 ...

  9. LeetCode简单题之猜数字大小

    题目 猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字. 请你猜选出的是哪个数字. 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了. 你可以通过调用一个预先 ...

  10. L1-056 猜数字 (结构体解决)

    L1-056 猜数字 (20 分) 一群人坐在一起,每人猜一个 100 以内的数,谁的数字最接近大家平均数的一半就赢.本题就要求你找出其中的赢家. 输入格式: 输入在第一行给出一个正整数N(≤104) ...

最新文章

  1. Linux系统——架构浅析
  2. 第15课:基于 CRF 的中文命名实体识别模型实现
  3. 第九节:JWT简介和以JS+WebApi为例基于JWT的安全校验
  4. 弹性负载均衡:负载无限,均衡有道【华为云分享】
  5. arm-linux启动,linux启动流程arm
  6. SCU 2941 I NEED A OFFER!(01背包变形)
  7. Facebook界面设计、网络操作系统和SNS大锅饭。
  8. 简单几步教会你画出透明丝袜,初学者画出透明质感
  9. MATLAB调用电脑摄像头前安装图像采集工具箱硬件支持包
  10. 手机上万里挑一的CAD看图软件,好用到颠覆你的世界观!
  11. oracle优化方法,九大Oracle性能优化基本方法详解
  12. 继电器控制实验程序c语言,继电器原理及实验程序
  13. 51.la申请免费统计代码
  14. 计算机网络——模拟信号(四)
  15. 新房装修选电视机还是投影仪?装修投影仪避坑指南
  16. 企业公众号运营见效难,如何突围?
  17. java的时间日期类_Java基础学习:日期时间类
  18. 机器学习实战2(决策树篇)
  19. 解决报错:Fan in and fan out can not be computed for tensor with fewer than 2 dimensions
  20. Windows Update彻底禁用/禁用后自动开启的解决办法

热门文章

  1. (pattern),(?:pattern),(?=pattern)(?!pattern)不明白,让我豁然开朗的文章
  2. PCB中产生电磁干扰的原因及消除干扰技巧
  3. linux和windows局域网连接网络,linux与windows局域网互访
  4. 设计模式-一些输出方式demo
  5. 请设计输出实数的格式,包括:⑴一行输出一个实数;⑵一行内输出两个实数;⑶一行内输出三个实数。实数用6.2f格式输出。
  6. 2016最新php授权验证系统v2.1,2016PHP受权验证系统V2.1完整版,域名+IP双重验证 一键升级受权系统 完美无错...
  7. (转)sqlite developer注册方法
  8. 未来互联网+大数据时代,DT革命互联网大数据应用简析
  9. ASP.NET农历时间显示(两)
  10. 【什么是DOM和BOM】