题目链接:

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. Jmeter 发送json{Jfinal 接口req rsp均为json}

    链接地址:http://yangyoupeng-cn-fujitsu-com.iteye.com/blog/2013649 使用jmeter发送json数据.方法有三种 原创,转载请注明出处 1.利用 ...

  2. 多线程下载工具-Axel

    1.安装: apt-get install axel 2.用法: axel 参数 文件下载地址 3.常用参数: -n 指定线程数 -o 指定文件存储位置(如不指定,默认存在当前位置(pwd)) -q ...

  3. 省部级干部list

    省部级干部表 省(市.自治区) 省(市)委书记 省(市)人大主任 省(市)长 省(市)政协主席 北京市 郭金龙 杜德印 王安顺 吉林 天津市 黄兴国 肖怀远 黄兴国 臧献甫 上海市 韩正 殷一璀(女) ...

  4. cocos2d-x游戏开发系列教程-超级玛丽08-消息机制

    在超级玛丽游戏里,地图类CMGameMap负责所有的程序逻辑,它包含了背景地图,包含了游戏元素精灵,当游戏中的精灵之间发生碰撞时,比如马里奥撞上砖头这种事情发生时,马里奥对象本身不知道怎么处理这个逻辑 ...

  5. Hdu 1301 Jungle Roads (最小生成树)

    地址:http://acm.hdu.edu.cn/showproblem.php?pid=1301 很明显,这是一道“赤裸裸”的最小生成树的问题: 我这里采用了Kruskal算法,当然用Prim算法也 ...

  6. AFNetworking3.0的基本使用方法

    前一段时间在做项目的时候发现AFNetworking3.0已经被大众所接受,所以以后肯定会有很多程序猿朋友必须了解和转移至3.0了,这是我这段时间使用和学习总结出来的一些常用的知识点,希望对大家有用. ...

  7. BZOJ 1965: [Ahoi2005]SHUFFLE 洗牌( 数论 )

    对于第x个数, 下一轮它会到位置p. 当x<=N/2, p = x*2 当x>N/2, p = x*2%(N+1) 所以p = x*2%(N+1) 设一开始的位置为t, 那么t*2M%(N ...

  8. BZOJ 2101: [Usaco2010 Dec]Treasure Chest 藏宝箱( dp )

    dp( l , r ) = sum( l , r ) - min( dp( l + 1 , r ) , dp( l , r - 1 ) ) 被卡空间....我们可以发现 l > r 是无意义的 ...

  9. Linux如何修改SSH端口号

    SSH是什么? SSH 为 Secure Shell 由 IETF 的网络工作小组(Network Working Group)所制定: SSH 是建立在应用层和传输层基础上的一种安全协议. SSH传 ...

  10. Python之路Day7

    第7天主要是面向对象的内容. 学到现在越来越吃力了,从上节课开始博客就没时间写了,看看别人写的博客都那么棒.又想起了那句话比你牛逼的人都在努力,你却在放羊...唉,我写作业的效率有点低,以后得抓紧时间 ...