原路折回,java猜数字游戏

院领导集体
中国科学院大学
上海科技大学
《中国科学院院刊》(中文版),5年超长合约签下新C罗 楚天108将大赛报名火爆。
《科学通报》是自然科学综合性学术刊物,上期所意外误平仓 新秀对决詹金斯追身帽辱弗神。
覆盖数学、物理、化学、生命科学,红珊瑚价格一年翻了两三倍 Yandex收购社交新闻公司The。
美国学中国不进世界杯,看看财务报表,国际足联要哭了(图)
媒体:下调存款准备金率等宽松举措有望出台
上海落实教育部学区化办学要求,将进一步完善中小学招生政策
中美新常态|两军签新附件防海空冲突:原则定了,还缺什么?
轮盘机猜数字的:为获抗癌新疗法,美国吉利德119亿美元购免疫疗法巨头公司
我要分享 &
文章来源:中国科学院&&&&发布时间:日 23:10&&【字号:&&&&&&】
  答:以习近平总书记关于网络安全重要指示为指引,以建设世界一流网络安全学院为主要目标,以探索网络安全人才培养新思路、新体制、新机制为主要内容,改革创新,先行先试,从政策、投入等多方面采取措施,经过十年左右的努力,形成国内公认、国际上具有影响力和知名度的网络安全学院。
  12、华桂宏,现任江苏师范大学校长、党委副书记。男,1966年5月生,汉族,江苏泰州人,在职研究生学历,经济学博士学位,教授(二级),1991年4月加入中国共产党,1986年8月参加工作。拟任省属本科院校党委书记。
  元宵节夜晚,王先生与朋友在融汇温泉城附近一家餐馆吃饭,大家发现了一件怪事,饭桌上1份鸡吃10个鸡爪,来到后厨,王先生发现自己先前点的那只鸡还活着。这到底是怎么回事?
轮盘机猜数字的:李大强、郑红枫、周珏、黄鑫四人组建团伙后,还没有挖到多少文物时,郑红枫就找了一个叫张涵的中间人向李大强“喊话”:团伙虽然是四个人,但只有李大强下水,而郑红枫则在船上拉绳。所以如果李大强一旦捞到值钱的宝贝就悄悄拉绳子,自己会偷偷将宝贝藏起来。
  刘波,女,1967年10月生,1988年1月入党,1990年8月参加工作,东南大学伦理学专业博士研究生毕业,研究员。2005年6月任东南大学党委副书记,2005年10月任东南大学党委副书记、副校长,2016年4月任东南大学党委常务副书记(正厅级)。秦海璐感到演了这么多年戏,虽然演技备受肯定,“但学到的东西和自身有的条件,并没有在这个行业里很好去发展。”当她看到《一意孤行》这个剧本的时候,她觉得是个好机会让大家认识不一样的秦海璐。“这个可能是更代表我个人的。”
  李明介绍说,前期的拆违行动只是序幕,从本月开始,每周都会对酒吧街的违建和广告牌进行拆除:“酒吧街商户多,广告牌多,二层违建更多,我们只能一步步来,至于每家酒吧的一层,则需要根据进一步测算来认定,如果最终认定是违建,也要拆。”
日 23:10,二是坚持依法行政。对网络预约出租汽车经营者、车辆和驾驶员,按照《国务院对确需保留的行政审批项目设定行政许可的决定》(国务院412号令)第112项设定的“出租汽车经营资格证、车辆运营证和驾驶员客运资格证”许可事项,依法实施许可管理。
  打开美味不用等手机App,“预约一分钟,免排队两小时”跃入眼中。根据官方公众号介绍,这个服务的逻辑是:只需向餐厅支付一定服务费,并在规定时间内吃完饭,就可以省去几小时的排队时间。
  从地图上来看,唐代上东里的范围恰好位于今天陇海铁路的南侧附近。刘庭训墓被盗掘的时间有可能是在修筑汴洛铁路(陇海铁路前身)的时间段内,即1905至1908的三年间。另据日本学者富田升的考证,修筑汴洛铁路洛阳段的时间上限,大概是该工程的后半期,即1907年夏季前。由此进一步推测,刘庭训墓被盗时间可能为1907年夏至1908年底。
  2016年12月21日上午9时,常州“毒地”事件引发的环境公益诉讼案在江苏省常州市中级法院开庭审理。提起诉讼的为公益组织北京市朝阳区自然之友环境研究所(以下简称“自然之友”)和中国生物多样性保护与绿色发展基金会(以下简称“绿发会”)。两机构认为,被告江苏常隆化工有限公司、常州市常宇化工有限公司、江苏华达化工集团有限公司应当为“毒地”事件的环境问题担责,请求法院判令被告消除原厂址污染物对周围环境的影响,承担生态环境修复费用,并承担原告律师费、差旅费等费用。
  冯委员叫冯万路,是河北省泊头市四营乡冯三番村的纪检委员。别看他平时不怎么健谈,但是一说到与换届纪律沾边儿的事,他就有了“话题”,滔滔不绝了。别说,他的这些话题,还都是村里党员干部特别关心的。从与冯万路的聊天中,村里的党员干部们不仅学到了很多换届纪律,而且也提醒着自己别犯错误。
  相关链接:
(责任编辑:闾熙雯)此文纯属个人爱好,不具任何可推广性,慎入,欢迎玩。
这是一个比较经典的益智游戏,叫做猜数字,很多人从小都在文曲星里玩过这游戏。
游戏规则:文曲星内部会产生四个不同的有序的一位数(1-9),我们对这四个数字进行猜测,每次猜测四个数字(包括了顺序),文曲星会返回A,B两个值,A代表我们猜的数字中正确数字的个数,B代表猜的数字中不仅正确而且处于正确位置上的数字的个数。如文曲星内部产生的是4327,我们猜1324,则A=3,表示3,2,4这3个数字是正确的,B=2,表示2,3这2个数字不仅正确还处于正确的位置。
游戏任务:最少次数地猜出文曲星内部的四个有序数字。
这里给出了一个通过逻辑判断,对任何情况至多6步可以猜出来的算法实现。根据有关资料的说明,6步内猜出所有情况貌似是这个游戏最快的结果。
算法:主要是复杂的逻辑判断。基本的想法是先在六步里判断出是哪4个数字,然后一次性根据前面积累的B值判断出正确的位置(如果此时有多个选择则选择其中之一输出,然后根据这次输出的反馈再判断)。
问题的关键是设置什么算法可以再六步内判断出这四个数字?这里给出的是,前三步总是做固定的猜测,分别是&1,2,3,4&,&2,1,5,6&,&7,8,1,2&, 设每次得到的A反馈分别为A1,A2,A3,然后根据sum=A1+A2+A3的值来做判断。显然sum&=3,因为没被猜得只有9。如果sum为3,那么9必然在其中,1,2必不在其中,然后可跟别根据A1,A2,A3的值来判断3,4,5,6,7,8 (当然还要更一步判断)。如果sum为4,这四个数必然为3,4,5,6,7,8 中的4个。。。当然如果你有兴趣,可以对其他的试着做类似的逻辑判断,建立在这些判断之下然后再进一步决定下面猜测什么。
这里给出一个C++实现的代码,欢迎测试。代码里能看清楚具体怎么根据sum的和来判断,以及怎么根据判断结果继续猜。如果你想让计算机猜的是8327,那么下面是执行的一个界面(比较粗糙,没好好做界面):
// a test.cpp : Defines the entry point for the console application.//#include "stdafx.h"# include &math.h&#include &stdio.h&# define TRUE 1# define FALSE 0# define OK 1 typedef int S void Read(int &a,int &b){
// 读入数据
printf("please input the values of A,B:");
scanf_s("%d%d",&a,&b);
return ;} void Putout(int a[4]){
for(i=0;i&4;i++)
printf("%d ",a[i]);
printf("\n");} Status Judje(int a[10][4],int b[10][2],int c[4]){
int k=0,i,j,sum=0;
for(j=0;j&10;j++)
if(a[j][0]==0)
for(i=0;i&4;i++)
if(a[j][i]==c[i]) k++;
if(k==b[j][1])
if(sum==10)
return OK;
return FALSE;
}Status little(int a[4]){
int i,j,k=0;
for(i=0;i&4;i++)
for(j=0;j&4;j++)
if(a[i]==a[j]) k++;
return FALSE;
return OK;}void Produce(int c[4],int a[10][4],int b[10][2]){ // 输出最终结果
int i=0,j[4],d[4];
while(a[i][0]!=0) i++;
for(j[0]=0;j[0]&4;j[0]++)
for(j[1]=0;j[1]&4;j[1]++)
for(j[2]=0;j[2]&4;j[2]++)
for(j[3]=0;j[3]&4;j[3]++)
if(b[i-1][1]!=4)
d[0]=c[j[0]]; d[1]=c[j[1]]; d[2]=c[j[2]]; d[3]=c[j[3]];
if(little(d)&&Judje(a,b,d))
a[i][0]=d[0];a[i][1]=d[1];a[i][2]=d[2];a[i][3]=d[3];
Putout(a[i]);
Read(b[i][0],b[i][1]);
printf("Right Answer! Thank You To Play!\n");
printf("Your Input is wrong!\n");
int _tmain(int argc, _TCHAR* argv[]){
int j,i=0,b[10][2]={0};
int a[10][4]={0};
sum=0,c[4]={0};
printf("think about 4 ordered and different digits and enter 's' to start:");
scanf_s("%c",&w);
a[0][0]=1;a[0][1]=2;a[0][2]=3;a[0][3]=4;
Putout(a[0]);
Read(b[0][0],b[0][1]);
if(b[0][0]==4&&b[0][1]==4)
printf("Right Answer! Thank You To Play!\n");
if(b[0][0]==4&&b[0][1]!=4)
for(i=0;i&4;i++) c[i]=a[0][i];
Produce(c,a,b);
sum=sum+b[0][0];
a[1][0]=2;a[1][1]=1;a[1][2]=5;a[1][3]=6;
Putout(a[1]);
Read(b[1][0],b[1][1]);
if(b[1][0]==4&&b[1][1]==4)
printf("Right Answer! Thank You To Play!\n");
if(b[1][0]==4&&b[1][1]!=4)
for(i=0;i&4;i++) c[i]=a[1][i];
Produce(c,a,b);
sum=sum+b[1][0];
a[2][0]=7;a[2][1]=8;a[2][2]=1;a[2][3]=2;
Putout(a[2]);
Read(b[2][0],b[2][1]);
if(b[2][0]==4&&b[2][1]==4)
printf("Right Answer! Thank You To Play!\n");
if(b[2][0]==4&&b[2][1]!=4)
for(i=0;i&4;i++) c[i]=a[2][i];
Produce(c,a,b);
sum=sum+b[2][0];
//do logical judgement according to the 3 results above
switch(sum)
if(b[0][0]==b[1][0]&&b[1][0]==b[2][0])
a[3][0]=9;a[3][1]=3;a[3][2]=5;a[3][3]=7;
Putout(a[3]);
Read(b[3][0],b[3][1]);
if(b[3][0]==4) break;
a[4][0]=3;a[4][1]=4;a[4][2]=5;a[4][3]=8;
Putout(a[4]);
Read(b[4][0],b[4][1]);
if(b[3][0]-b[4][0]==2&&b[3][0]==3)
c[1]=3;c[2]=6;c[3]=7;
if(b[3][0]-b[4][0]==1&&b[3][0]==3)
c[1]=4;c[2]=5;c[3]=7;
if(b[3][0]-b[4][0]==1&&b[3][0]==2)
c[1]=4;c[2]=6;c[3]=7;
if(b[3][0]-b[4][0]==0&&b[3][0]==3)
c[1]=3;c[2]=5;c[3]=8;
if(b[3][0]-b[4][0]==0&&b[3][0]==2)
c[1]=4;c[2]=6;c[3]=7;
if(b[3][0]-b[4][0]==-1&&b[3][0]==2)
c[1]=4;c[2]=5;c[3]=8;
if(b[3][0]-b[4][0]==-1&&b[3][0]==1)
c[1]=4;c[2]=6;c[3]=8;
a[3][0]=9;
for(j=0;j&3;j++)
if(b[j][0]==2)
a[3][1]=c[1]=2*j+3; a[3][2]=c[2]=2*j+4;
if(b[j][0]==1) a[3][3]=c[3]=2*j+3;
Putout(a[3]);
Read(b[3][0],b[3][1]);
if(b[3][0]==3)
c[3]=c[3]+1;
for(j=0;j&3;j++)
if(b[j][0]==2)
c[i]=2*j+3; c[i+1]=2*j+4;i=i+2;
if(i==4) break;
a[3][1]=c[0];a[3][0]=c[1];
for(j=0;j&3;j++)
if(b[j][0]==1)
a[3][i]=c[i]=2*j+3;
Putout(a[3]);
Read(b[3][0],b[3][1]);
if(b[3][0]==4) break;
if(b[3][0]==2)
c[3]=c[3]+1;
c[2]=c[2]+1;
c[2]=a[4][0]=a[3][2]+1;a[4][1]=a[3][3];a[4][2]=a[3][1];a[4][3]=a[3][0];
Putout(a[4]);
Read(b[4][0],b[4][1]);
if(b[4][0]==4) break;
c[2]=c[2]-1;c[3]=c[3]+1;
c[0]=a[3][0]=9;i=1;
for(j=0;j&3;j++)
if(b[j][0]==3)
c[i]=a[3][i]=2*j+3; c[i+1]=a[3][i+1]=2*j+4;
a[3][3]=1;
Putout(a[3]);
Read(b[3][0],b[3][1]);
if(b[3][0]==4) break;
if(b[3][0]==3)
if(b[j][0]==2)
c[i]=a[3][i]=2*j+3;
c[3]=a[3][3]=1;
Putout(a[3]);
Read(b[3][0],b[3][1]);
if(b[3][0]==4) break;
a[4][0]=a[3][2]+1;a[4][3]=a[3][1];a[4][1]=1;a[4][2]=2;
Putout(a[4]);
Read(b[4][0],b[4][1]);
if(b[3][0]-b[4][0]==2&&b[3][0]==3)
c[1]=1;c[2]=a[3][1]+1;c[3]=a[3][2];
if(b[3][0]-b[4][0]==1&&b[3][0]==3)
c[1]=2;c[2]=a[3][1];c[3]=a[3][2];
if(b[3][0]-b[4][0]==1&&b[3][0]==2)
c[1]=2;c[2]=a[3][1]+1;c[3]=a[3][2];
if(b[3][0]-b[4][0]==0&&b[3][0]==3)
c[1]=1;c[2]=a[3][1];c[3]=a[3][2]+1;
if(b[3][0]-b[4][0]==0&&b[3][0]==2)
c[1]=2;c[2]=a[3][1]+1;c[3]=a[3][2];
if(b[3][0]-b[4][0]==-1&&b[3][0]==2)
c[1]=2;c[2]=a[3][1];c[3]=a[3][2]+1;
if(b[3][0]-b[4][0]==-1&&b[3][0]==1)
c[1]=2;c[2]=a[3][1]+1;c[3]=a[3][2]+1;
for(j=0;j&4;j++)
if(b[j][0]==2) i++;
c[0]=a[3][0]=9;c[1]=a[3][1]=3;c[2]=a[3][2]=5;c[3]=a[3][3]=7;
Putout(a[3]);
Read(b[3][0],b[3][1]);
a[4][0]=3;a[4][1]=4;a[4][2]=5;a[4][3]=8;
Putout(a[4]);
Read(b[4][0],b[4][1]);
if(b[3][0]-b[4][0]==1&&b[3][0]==2)
c[1]=3;c[2]=6;c[3]=7;
if(b[3][0]-b[4][0]==0&&b[3][0]==1)
c[1]=4;c[2]=5;c[3]=7;
if(b[3][0]-b[4][0]==0&&b[3][0]==1)
c[1]=4;c[2]=6;c[3]=7;
if(b[3][0]-b[4][0]==-1&&b[3][0]==2)
c[1]=3;c[2]=5;c[3]=8;
if(b[3][0]-b[4][0]==-1&&b[3][0]==1)
c[1]=4;c[2]=6;c[3]=7;
if(b[3][0]-b[4][0]==-2&&b[3][0]==1)
c[1]=4;c[2]=5;c[3]=8;
if(b[3][0]-b[4][0]==-2&&b[3][0]==0)
c[1]=4;c[2]=6;c[3]=8;
for(j=0;j&4;j++)
a[5][j]=c[j];
Putout(a[5]);
Read(b[5][0],b[5][1]);
if(b[5][0]==4)
for(j=0;j&3;j++)
if(b[j][0]==3)
a[3][1]=c[1]=2*j+3;
a[3][2]=c[2]=2*j+4;
for(j=0;j&3;j++)
if(b[j][0]==2)
a[3][3]=c[3]=2*j+3;
a[3][0]=c[0]=1;
Putout(a[3]);
Read(b[3][0],b[3][1]);
if(b[3][0]==4)
if(b[3][0]==2)
c[0]=2;c[3]=c[3]+1;
a[4][0]=c[0]=a[3][0]+1;
a[4][3]=a[3][1];
a[4][1]=a[3][2];
a[4][2]=a[3][3];
Putout(a[4]);
Read(b[4][0],b[4][1]);
if(b[4][0]==4)
if(b[4][0]==2)
c[0]=1;c[3]=c[3]+1;
c[0]=a[3][1]=1;c[1]=a[3][2]=2;c[2]=a[3][0]=9;
for(j=0;j&3;j++)
if(b[j][0]==3)
a[3][3]=c[3]=2*j+3;
Putout(a[3]);
Read(b[3][0],b[3][1]);
if(b[3][0]==4)
if(b[3][0]==3)
c[3]=c[3]+1;
c[0]=a[3][3]=1;c[1]=a[3][2]=2;
for(j=0;j&3;j++)
if(b[j][0]==4)
a[3][3]=c[2]=2*j+3;a[3][0]=c[3]=2*j+4;
for(j=0;j&3;j++)
if(b[j][0]==3)
a[3][i]=c[i+2]=2*j+3;
Putout(a[3]);
Read(b[3][0],b[3][1]);
if(b[3][0]==4)
if(b[3][0]==2)
c[3]=c[3]+1;
c[2]=c[2]+1;
c[2]=a[4][2]=a[3][0]+1;
a[4][1]=a[3][3];
a[4][0]=a[3][1];
a[4][3]=a[3][2];
Putout(a[4]);
Read(b[4][0],b[4][1]);
if(b[4][0]==4)
c[2]=c[2]-1;c[3]=c[3]+1;
default:printf("ERROR input!"); break;}
Produce(c,a,b);scanf_s("%d",&j);
阅读(...) 评论()

我要回帖

更多关于 猜数字 的文章

 

随机推荐