Java实现A、B两人轮流从盒中取球,取出球的数目必须是:1,3,7或者8个
来源:互联网 发布:淘宝网葫芦丝 编辑:程序博客网 时间:2024/06/08 11:42
import java.util.Scanner;/*** * 今盒子里有n个小球,A、B两人轮流从盒中取球,每个人从盒子中取出的球的数目必须是:1,3,7或者8个。 A先取球,然后双方交替取球,直到取完。 被迫拿到最后一个球的一方为负方(输方) 请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢? 程序运行时,从标准输入获得数据,其格式如下: 先是一个整数n(n<100),表示接下来有n个整数。然后是n个整数,每个占一行(整数<10000),表示初始球数。 程序则输出n行,表示A的输赢情况(输为0,赢为1)。 例如,用户输入:4121018 则程序应该输出:0110 */public class Application {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println(CanIWin(scanner.nextInt()));}static boolean CanIWin(int n) {n %= 15;// 提高效率,有规律表明15为周期if (n == 0)return true;// 如果轮到自己球被取完了则赢了// 否则尝试所有的取法后观察对手只要对手可能输自己就赢了return ((n >= 8 && !CanIWin(n - 8)) || (n >= 7 && !CanIWin(n - 7))|| (n >= 3 && !CanIWin(n - 3)) || (n >= 1 && !CanIWin(n - 1)));}}
0 0
- Java实现A、B两人轮流从盒中取球,取出球的数目必须是:1,3,7或者8个
- 取球游戏 今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个, 也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。
- java实现3个线程轮流打印A、B、C,达到“ABBCCCAAAABBBBBCCCCCC”,打印200个字符停止,并在控制台打印出A、B、C各打印了多少个
- java随机从数组中取出指定数目的值
- 题目:两个人玩一个数字游戏,给定两个正整数A,B,两个人轮流从一个数中减去另外一个数的正数倍,要保证结果非负,首先得到0的人获胜。
- 有n枚硬币按照0到n-1对它们进行编号,其中编号为i的硬币面额为vi,两个人轮流从剩下硬币中取出一枚硬币归自己所有,但每次取硬币的时候只能取剩下的硬币中编号最小的硬币或者编号最大的硬币,在两个都采用最
- Java实现从m个各不相同的元素中取出n个,并进行全排列。
- Java实现从m个各不相同的元素中取出n个,并进行全排列
- java实现:输入两颗二叉树A,B,判断B是不是A的子结构
- java实现输入两棵二叉树A,B,判断B是不是A的子结构
- Java:从一亿数中取出100个(3秒获取)
- Java实现集合的组合(从组合中取出K个元素进行组合的所有情况)
- 1、两人做游戏,轮流报数,报出的数只能是1、2、3、4、5、6、7、8其中之一,把两个人报出的数连加起来,谁报数后加起来的和是123,谁就获胜,让你先报,为了确保胜利,你第一个数报多少?
- Java n个线程轮流打印数字的问题
- g 分硬币游戏 两堆硬币a,b个,AekdyCoin先拿硬币,abcdxyzk后拿,接着轮流拿。谁那最后一个谁赢。每次只拿任一堆中的任意个。
- S的非空子串的数目是( )。 A.29 B.28 C.16 D.17 E.7 设字符串S="Olympic"
- 第一个java的a+b
- WaitHandles 的数目必须少于或等于 64 个
- mysql 安装简介
- matlab max/min函数
- 最短路径算法 python
- UVA Simple calculations (数学推导)
- php实现无限极菜单显示
- Java实现A、B两人轮流从盒中取球,取出球的数目必须是:1,3,7或者8个
- WV.14-统计单词个数
- Windows与Linux文件共享
- 女星没了卧蚕电眼魅力减半
- 【第1篇】通过json-lib把字符串转换成json的使用
- Java实现“输出第10002个素数”
- 11 个重要的数据库设计规则
- HTTP协议小结
- myeclipse转换