java实现取球博弈
今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。
我们约定:
每个人从盒子中取出的球的数目必须是:1,3,7或者8个。
轮到某一方取球时不能弃权!
A先取球,然后双方交替取球,直到取完。
被迫拿到最后一个球的一方为负方(输方)
请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢?
程序运行时,从标准输入获得数据,其格式如下:
先是一个整数n(n<100),表示接下来有n个整数。然后是n个整数,每个占一行(整数<10000),表示初始球数。
程序则输出n行,表示A的输赢情况(输为0,赢为1)。
例如,用户输入:
4
1
2
10
18
则程序应该输出:
0
1
1
0
注意:
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
package com.liu.ex6;
import java.util.Scanner;
public class Main {
    public static int[] value = new int[10001];
    public void getValue() {
        for(int i = 9;i < 10001;i++) {
            if(value[i - 1] == 0)
                value[i] = 1;
            if(value[i - 3] == 0)
                value[i] = 1;
            if(value[i - 7] == 0)
                value[i] = 1;
            if(value[i - 8] == 0)
                value[i] = 1;
        }
    }
    public void printResult(int[] A) {
        getValue();
        for(int i = 0;i < A.length;i++)
            System.out.println(value[A[i]]);
        return;
    }
    public static void main(String[] args) {
        Main test = new Main();
        value[2] = 1;
        value[4] = 1;
        value[6] = 1;
        value[8] = 1;
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] A = new int[n];
        for(int i = 0;i < n;i++)
            A[i] = in.nextInt();
        test.printResult(A);
     }
}
package 第二次模拟;
import java.util.ArrayList;
import java.util.Scanner;
public class Demo7取球 {
	//用a数组表示b赢了的情况,b赢不了就是赢
	static boolean[] a = new boolean[100000];
	public static void main(String[] args) {
		a[2] = true;//a赢就是true
		a[4] = true;
		a[6] = true;
		a[8] = true;
		ArrayList<Integer> list = new ArrayList<Integer>();
		//ArrayList<Integer> Output = new ArrayList<Integer>();
		int max = -1,n=0,temp;
		Scanner sc = new Scanner(System.in);
		//输入数字的数量
		  n = sc.nextInt();
		  for (int i = 0; i < n; i++) {
			  //每次输入的数字
			  temp=sc.nextInt();
			//  max=  max<temp?temp:max;
				list.add(temp);
		}
		  sc.close();
		  for (int i = 0; i < n; i++) {
			  //递归省空间费时间
			 System.out.println(f(list.get(i))?1:0);
		}
	}
	public static boolean f(int i){
		if(i<9){
			return a[i];
		}
		//上一次是输的的话,这一次就是赢,取反,只要有一种方法赢了,我就能赢
		return  (!f(i - 1) || !f(i - 3) ||!f(i - 7) || !f(i - 8));
	}
}
java实现取球博弈的更多相关文章
- java算法   第七届 蓝桥杯B组(题+答案) 9.取球博弈
		9.取球博弈 (程序设计) 两个人玩取球的游戏.一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目.如果无法继续取球,则游戏结束.此时,持有奇数个球的一方获胜.如果两人都是 ... 
- java实现第七届蓝桥杯取球博弈
		题目9.取球博弈 取球博弈 两个人玩取球的游戏. 一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目. 如果无法继续取球,则游戏结束. 此时,持有奇数个球的一方获胜. 如果两 ... 
- 2016蓝桥杯"取球博弈"问题
		较难,网上有能得出正确结果的代码,但是读了一下,像是拼凑出的结果,逻辑不通,代码和注释不符 参考网上代码写了一版,结构相对清晰,注释比较详细 题目很长: 两个人玩取球的游戏.一共有N个球,每人轮流取球 ... 
- 2012年第三届蓝桥杯C/C++程序设计本科B组省赛 取球博弈
		2012年第三届蓝桥杯C/C++程序设计本科B组省赛 取球博弈 题目描述 **取球博弈 今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并 ... 
- java实现取球游戏
		/* 今盒子里有 n 个小球,A.B 两人轮流从盒中取球,每个人都可以看到另一个人取了多少个, 也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定: 每个人从盒子中取出的球的 ... 
- 取球游戏_nyoj_518(博弈-蓝桥杯原题).java
		取球游戏 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 2 描述 今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下 ... 
- java实现取球类的博弈问题
		1.问题描述: 今盒子中有n个小球,A,B两人轮流从盒子中取球,每个人都可以看到对方的取球数目. 规定如下: 取球只能取1,3,7,8四种情况.如果没有球取了,则输了.规定A先取球,给定初始球的数目, ... 
- 蓝桥杯 第三届C/C++预赛真题(10) 取球游戏(博弈)
		今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定: 每个人从盒子中取出的球的数目必须是:1 ... 
- nyoj_518_取球游戏_201404161738
		取球游戏 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个 ... 
随机推荐
- shrine
			0x01 import flask import os app = flask.Flask(__name__) app.config['FLAG'] = os.environ.pop('FLAG') ... 
- angular 实现依赖注入
			1:首先获取module对象var myAppModule = angular.module('myApp', []); 2:定义对象(类似spring中xml声明bean对象<bean id= ... 
- centos7 下安装apache mysql php phpmyadmin。
			1 安装mysql yum -y install mariadb-server systemctl start mariadb.service systemctl enable mariadb.ser ... 
- webpack指南(一)HRM+Tree Shaking
			参考:https://www.cnblogs.com/PasserByOne/p/12084323.html https://blog.csdn.net/qq593249106/article/det ... 
- 曹工谈Spring Boot:Spring boot中怎么进行外部化配置,一不留神摔一跤;一路debug,原来是我太年轻了
			spring boot中怎么进行外部化配置,一不留神摔一跤:一路debug,原来是我太年轻了 背景 我们公司这边,目前都是spring boot项目,没有引入spring cloud config,也 ... 
- 新概念英语三 新东方主讲Lesson1
			新概念二 Lesson95 词汇 ①get a shock 吓了一跳,得到一个惊喜 例:his wife got a shock get into a such mess 这么不幸搞得一片狼籍弄得这样 ... 
- CF861D
			题目链接:http://codeforces.com/contest/861/problem/D 解题思路: 优雅的暴力. 对于输入的每一个号码,从短到长找出它的所有子串,用 vector 保存每个号 ... 
- oracle计算两日期相差多少秒,分钟,小时,天,周,月,年
			--计算两个时间差相差多少秒select ceil((sysdate-t.transdate)* 24 * 60 * 60),t.transdate,sysdate from esc_trans_lo ... 
- Java8中的Lambda表达式
			Lambda是什么 Lambda表达式,也可称为闭包,是java8的新特性,作用是取代大部分内部类,优化java代码结构,让代码变得更加简洁紧凑. Lambda的基本语法 (expression)-& ... 
- Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/j..........
			如果你在执行 docker images 出现这样的问题 注意:把你的用户切到root下 
