题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1172

题目

猜数字

Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 2540    Accepted Submission(s): 1475

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
 
Recommend
We have carefully selected several similar problems for you:  1106 1175 1174 1180 1108

 

这个题目的思路是:

从1000到9999进行暴力枚举。。。

须要满足两个条件:

1:题目所给的条件和眼下枚举的值要有同样的位数的值要相等。。

2:将眼下枚举的数和题目所给的数进行枚举,看所给的条件的数与眼下枚举的的数的出现同样的数相等的数有多少个。。可是反复的书不算。。所以开个标志变量。。。

所以我的暴力枚举解法例如以下:

#include<cstdio>
#include<cstring>
const int maxn=100+10;
struct node
{
int a,b,c;
}point[maxn];
int a[5],b[5];
int mark[5];
void pre_deal(int c,int d)
{
a[1]=c/1000;
a[2]=c/100%10;
a[3]=c/10%10;
a[4]=c%10;
b[1]=d/1000;
b[2]=d/100%10;
b[3]=d/10%10;
b[4]=d%10;
} int judge(int x,int y)
{
int count1,count2;
count1=count2=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(mark,0,sizeof(mark));
pre_deal(x,point[y].a);
for(int i=1;i<=4;i++)
{
if(a[i]==b[i])
count1++;
}
// printf("count1:%d\n",count1);
if(count1!=point[y].c)
return 0;
for(int i=1;i<=4;i++)
for(int j=1;j<=4;j++)
{
if(a[i]==b[j]&&!mark[j])
{
mark[j]=1;
count2++;
break;
}
}
//printf("count2:%d\n",count2);
if(count2!=point[y].b)
return 0;
else
return 1;
} int main()
{
int n,ok;
int count,ans;
while(scanf("%d",&n)!=EOF&&n)
{
count=0;
for(int i=1;i<=n;i++)
scanf("%d%d%d",&point[i].a,&point[i].b,&point[i].c);
for(int i=1000;i<=9999;i++)
{
ok=1;
for(int j=1;j<=n;j++)
{
ok=judge(i,j);
if(!ok)
break;
}
if(ok)
{
count++;
ans=i;
}
if(count==2)
break;
}
// printf("count:%d\n",count);
if(count==1)
printf("%d\n",ans);
else
printf("Not sure\n");
}
return 0;
}

hdu1172猜数字的更多相关文章

  1. hdu1172猜数字(暴力枚举)

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

  2. HDU1172猜数字 [模拟]

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

  3. C语言猜数字游戏

    猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手. 老程序猿就不要看了,黑呵呵 源代码1 include stdio.h include stdlib.h include ti ...

  4. 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II

    好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...

  5. java 猜数字游戏

    作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...

  6. 【原创Android游戏】--猜数字游戏Version 0.1

    想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...

  7. 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用

    --------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...

  8. python学习笔记 ——python写的猜数字游戏 002

    from sys import exit import random def Arrfor(str): #CONTST = CONTST + 1 artificial = input("请输 ...

  9. Python小游戏之猜数字

    最近师兄师姐毕业,各种酒席,酒席上最常玩的一个游戏就是猜数字,游戏规则如下: 出题人在手机上输入一个0-100之间的数字,其它人轮流猜这个数字,如果你不幸猜中则要罚酒一杯.每次猜数字,出题人都要缩小范 ...

随机推荐

  1. Smarterer Test

    1.Using xp can swap two characters 2.In normal mode, use /abc/+4 can find the string "abc" ...

  2. Centos6 安全防护设置指南

    参考博文: Centos 6.4安全防护设置指南 4.使用chattr命令给下列文件加上不可更改的属性 有效防止非法用户进行文件的修改. [root@localhost ~]# chattr +i / ...

  3. 用composer安装 Laravel | Laravel需要的环境配置

    一:安装 参考网站 http://v4.golaravel.com/docs/4.2/installation 1.先确保安装好了PHP,和服务器环境 2.然后下载composer可执行文件到当前目录 ...

  4. 我的Python成长之路---第七天---Python基础(22)---2016年2月27日(晴)

    socket网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  5. 轮播组件iceSlider

    ~~~~作为编写组件的一个参考吧,在js输出组件样式的问题上 探讨一下 尽量简化组件的调用 function iceSlider(element,options) { /* 功能:广告翻转切换控制 参 ...

  6. Windows 8.1 RTM初体验

    Windows 8.1正式发布在10月17日,现在可以在MSDN/TechNet进行订阅下载. 操作系统版本号和Windows Server 2012 R2保持一致. 开始屏幕动态磁贴现在有4种尺寸可 ...

  7. centos安装vim7.4

    转载于:http://www.cnblogs.com/nhlinkin/p/3545509.html    系统版本centos6.4; root权限 su - root     卸载 $ rpm - ...

  8. golang channel初次接触

    goroutine之间的同步 goroutine是golang中在语言级别实现的轻量级线程,仅仅利用go就能立刻起一个新线程.多线程会引入线程之间的同步问题,经典的同步问题如生产者-消费者问题,在c, ...

  9. java生成压缩图

    链接地址:http://blog.sina.com.cn/s/blog_407a68fc0100nrba.html package util; import java.awt.image.Buffer ...

  10. CentOS 安装easy_install、pip的方法

    CentOS 安装easy_install的方法: wget -q http://peak.telecommunity.com/dist/ez_setup.py python ez_setup.py ...