黑马程序员技术交流社区
标题:
一道简单的练习题
[打印本页]
作者:
丁强强
时间:
2013-2-22 16:22
标题:
一道简单的练习题
本帖最后由 丁强强 于 2013-2-24 05:57 编辑
A,B俩人,A说1(A第一次说的数字的范围在1-10之间),B只能说2,3,4之间的数, 也就是说B只能说A之后的3位数字,谁最后说出 33就算输了。
问:怎么能让B百战百胜?
有写出来的,请附上源码。
作者:
夏振博
时间:
2013-2-22 16:30
本帖最后由 夏振博 于 2013-2-22 16:36 编辑
这跟数30不一样吗? 谁数30谁输,抢占先机最好先数1 ,如果A说1,那么B一定要把5和9数出来,如果A数的9,B必输 ,反之,B数9,A必输
规则就是谁能数9就停下,A数一个数,B数3个数,A数2个数,B数2个数,A数3个数,B数一个数,大概就这规律
作者:
冯超
时间:
2013-2-22 16:50
如果B说了2,那么A就只能说3吗?还是A也可以在B说了之后的三位数(3,4,5)???
作者:
江华
时间:
2013-2-22 17:15
很简单!
a 说一个数,然后b 跟着说这个数后边的3个以内的数。
也就是说,每一轮 b和a使用的数字的个数的最大值是4 ,那我们就假设每一轮都使用了4个数,
假设a先说,要B输。那也就是说,最后一次轮,a是32,占用一个数字,
剩下31个数字,31除以4,余3。
OK
第一次 a说1,然后,不论B说的是数字几,a就说 ------- (4 - 他跳跃的数字的个数+他说的那个数)
//例如 上一轮中a 说的是1, b说2, a 说5
// b跳跃了1个数字, 4-1 =3 , 3 加上a说的2 就是啊要说的数 ,
这样,B必输!
如果b先要B输,那就更简单了
b先报一个数, a就报 (4 - 他跳跃的数字的个数+他说的那个数)
但是其中仅仅只有一次包的数是 (3- 他跳跃的数字的个数+他说的那个数) ,
作者:
江华
时间:
2013-2-22 17:15
有点烦心,不知道能看懂不?
等静下心了,再说吧!
作者:
贾文泽
时间:
2013-2-22 17:29
public class text {
public static void main(String[] args) {
int mun=0;
int A=0;
int B=0;
while (mun<33)
{
int a=(int)(Math.random()*3+1); //生成一个1-3的随机数
A=mun+a; //A先说 a
mun=A;
if(mun>=33) //如果mun到33了B就没必要再继续说了
break;
B=mun+(4-a); //B说出4-a ,保证mun+a+(4-a)始终是4的倍数,这样32就肯定是B说的
mun=B;
}
System.out.println(A);
System.out.println(B); // 最后输出B的值永远是32.所以B是战无不胜
}
}
复制代码
我承认我闲了,弱弱的问下,有没有技术分{:soso_e154:}
作者:
夏振博
时间:
2013-2-22 17:40
推算下
到33算胜:要依次抢占这几个数: 1.5.9.13.17.21.25.29
到33算输:要依次抢占这几个数: 4.8.12.16.20.24.28.32
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2