A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁强强 中级黑马   /  2013-2-22 16:22  /  1887 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 丁强强 于 2013-2-24 05:57 编辑

A,B俩人,A说1(A第一次说的数字的范围在1-10之间),B只能说2,3,4之间的数, 也就是说B只能说A之后的3位数字,谁最后说出 33就算输了。
问:怎么能让B百战百胜?

有写出来的,请附上源码。

6 个回复

正序浏览
推算下
到33算胜:要依次抢占这几个数: 1.5.9.13.17.21.25.29
到33算输:要依次抢占这几个数: 4.8.12.16.20.24.28.32
回复 使用道具 举报

  1. public class text {
  2.      public static void main(String[] args) {
  3.         
  4.                 int mun=0;
  5.                 int A=0;
  6.                 int B=0;
  7.                 while (mun<33)
  8.                 {
  9.                         int a=(int)(Math.random()*3+1);   //生成一个1-3的随机数
  10.                        
  11.                         A=mun+a;       //A先说 a
  12.                         mun=A;
  13.                         if(mun>=33)    //如果mun到33了B就没必要再继续说了
  14.                                 break;
  15.                         B=mun+(4-a);   //B说出4-a ,保证mun+a+(4-a)始终是4的倍数,这样32就肯定是B说的
  16.                         mun=B;
  17.                        
  18.                 }
  19.                
  20.                 System.out.println(A);
  21.                 System.out.println(B);    // 最后输出B的值永远是32.所以B是战无不胜
  22.     }
  23. }
复制代码
我承认我闲了,弱弱的问下,有没有技术分{:soso_e154:}
回复 使用道具 举报
有点烦心,不知道能看懂不?
等静下心了,再说吧!
回复 使用道具 举报
很简单!
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-  他跳跃的数字的个数+他说的那个数) ,
回复 使用道具 举报
如果B说了2,那么A就只能说3吗?还是A也可以在B说了之后的三位数(3,4,5)???
回复 使用道具 举报
本帖最后由 夏振博 于 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数一个数,大概就这规律
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马