当前位置:编程学习 > JAVA >>

求大神帮忙解决软件大赛的问题

4、猜数字
  很多人都玩过这个游戏:甲在心中想好一个数字,乙来猜。每猜一个数字,甲必须告诉他是猜大了,猜小了,还是刚好猜中了。下列的代码模拟了这个过程。其中用户充当甲的角色,计算机充当乙的角色。为了能更快地猜中,计算机使用了二分法。
System.out.println("请在心中想好一个数字(1~100),我来猜");
System.out.println("我每猜一个数字,你要告诉我是“猜大了”,“猜小了”,还是“猜中”");
Scanner scan = new Scanner(System.in);
int v1 = 1;
int v2 = 100;
for(;;)
{
int m = (v1 + v2)/2;
System.out.println("我猜是:" + m);
System.out.println("1.猜得太大了");
System.out.println("2.猜得太小了");
System.out.println("3.猜中!");
System.out.print("请选择:");
int user = Integer.parseInt(scan.nextLine());
    if(user==3) break;
if(user==1) _____________;
if(user==2) _____________;
} --------------------编程问答-------------------- if(user==1) v2=m;
if(user==2) v1=m; --------------------编程问答--------------------
引用 1 楼 abc41106 的回复:
if(user==1) v2=m;
if(user==2) v1=m;
--------------------编程问答--------------------
 int v2 = 100;
 for(;;)
 {

这个for用的和我有点像啊 打死不用while哈哈 --------------------编程问答-------------------- 没怎么学过算法,我是这样理解的:
把(v1,v2)这个范围内分为两个区间,一个是(v1,(v1+v2)/2)另一个是((v1+v2)/2,v2),m=(v1 + v2)/2
猜大了就从小区间里面继续猜,上界(v2)变成了m..
猜小了。。大。。。。。。。。下界(v1)变成了m..
然后知道猜对,你懂的 --------------------编程问答--------------------
引用 1 楼 abc41106 的回复:
if(user==1) v2=m;
if(user==2) v1=m;

补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,