蓝桥系列(一)取球游戏

问题描述:    
    今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。


    我们约定:
    
    每个人从盒子中取出的球的数目必须是:1,3,7或者8个。


    轮到某一方取球时不能弃权!


    A先取球,然后双方交替取球,直到取完。


    被迫拿到最后一个球的一方为负方(输方)
    


    请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢?


    程序运行时,从标准输入获得数据,其格式如下:


    先是一个整数n(n<100),表示接下来有n个整数。然后是n个整数,每个占一行(整数<10000),表示初始球数。


    程序则输出n行,表示A的输赢情况(输为0,赢为1)。


    例如,用户输入:



10
18


    则程序应该输出:
0
1
1
0






    注意:


    请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
    

    在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。



思路:

其实以前碰到过类似的问题,对于这种问题,必须采用逆向思维,即从一个小数字开始往大了推理,我们可以很轻松的知道初始球数为1-8时,A的输赢情况。那么对于初始球数大于8的情况(用n表示),我们可以这样考虑,如果初始球数为n-1或n-3或n-7或n-8时,只要有一种情况A必输,那么初始球数为n时,A必赢,反之,A必输。


代码:

public class QuQiuBoYi {


/**
* @param args
*/
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
scanner.nextLine();
int []numbers=new int[n];
for(int i=0;i<n;++i){
numbers[i]=scanner.nextInt();
scanner.nextLine();
}
for(int i=0;i<n;++i){
System.out.println(getResult(numbers[i]));
}


}
public static int getResult(int number){
return n[number];
}


private static int[] n = new int[10001];
static {
// 由题意得:
n[1] = 0;
n[2] = 1;
n[3] = 0;
n[4] = 1;
n[5] = 0;
n[6] = 1;
n[7] = 0;
n[8] = 1;
for (int i = 9; i < n.length; ++i) {
if (n[i - 1] == 0 || n[i - 3] == 0 || n[i - 7] == 0
|| n[i - 8] == 0) {
n[i] = 1;
} else {
n[i] = 0;
}
}
};


}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值