`
聂鲁达
  • 浏览: 5574 次
社区版块
存档分类
最新评论

捡石子小游戏程序解析

 
阅读更多
package com.hpu.bai;
 
import java.util.Scanner;
 
public class Cobble {
    public static void main(String[] args) {
        Cobble c = new Cobble();
        c.print();
        c.getCobble();
         
    }
        int[] arr ={3,5,7};
        int n = 15;int count =0;
        Scanner input = new Scanner(System.in);
         
        public int total(){
            int m =0;
            for(int i=0;i<arr.length;i++){
                m+=arr[i];
            }
            return m;
        }
        public void print(){
            for(int i=0;i<arr.length;i++){
                System.out.println("第"+(i+1)+"堆还剩下"+arr[i]+"个石子##");
            }
        }
        public void player(int b){
            if(b%2 == 1){
                System.out.println("该第一个人拿石子了");
            }else{
                System.out.println("该第二个人拿石子了");
            }
                     
        }
        public void getCobble(){
            count++;
            if(n>1){
                player(count);
                System.out.println("请输入你要在哪一堆石子中取石子");
                int i = input.nextInt()-1;
                System.out.println("请输入你要在这堆石子中取几个");
                int m = input.nextInt();
                if(m>3){
                        System.out.println("你的输入有误,请重新输入");
                        count--;
                        getCobble();
                }else{
                arr[i]=arr[i]-m;
                if(arr[i]<0){
                    System.out.println("石子快没了,要么你少拿点,要么你换一堆吧");
                    arr[i]= arr[i]+m;
                    count--;
                }
                print();
                n = total();
                getCobble();
            }
            }else{
                if(count%2 ==1){
                    System.out.println("别拿了,第1位玩家你已经输了");
                }else{
                    System.out.println("别拿了,第2位玩家你已经输了");
                }
            }
        }
}
分享到:
评论

相关推荐

    石子合并 在一个圆形操场的四周摆放着 n 堆石子. 现要将石子有次序地合并成一堆, 规定每次只能选相邻的 2 堆石子合并成新的一堆, 并将新的一堆石子数记为该次合并的得分.

    ### 知识点解析 #### 一、问题背景与描述 **题目名称:**石子合并 **时间限制:**1000MS **内存限制:**65536K **问题描述:** 在一个圆形操场的四周摆放着 \(n\) 堆石子。目标是将这些石子按照一定的顺序合并...

    LanQiaoBei.rar_lanqiaobei_程序试题_蓝桥杯

    6. **取子游戏.cpp**:这是一类典型的博弈论问题,比如Nim游戏或石子游戏。解决这类问题通常需要分析游戏状态并构建决策树,使用动态规划或最小最大搜索算法。 7. **古堡算式.cpp**:题目可能涉及数学逻辑或数学...

    组合游戏.rar

    在计算机科学领域,特别是在算法竞赛如ACM(国际大学生程序设计竞赛)中,理解并掌握组合游戏的策略至关重要。"组合游戏.rar"这个压缩包文件包含了关于这类游戏的深入探讨,包括sg函数和博弈论的应用。本文将详细...

    Mancala:用Python编写的Mancala棋盘游戏

    3. **用户交互**:设计命令行接口,让玩家输入他们想要移动的小坑编号,程序解析输入并执行相应的移动。 4. **状态记录**:考虑到游戏可能需要回溯(例如,当玩家选择了一个无效的移动),可以使用栈或递归来保存...

    动态规划部分题解-c++描述

    总结起来,这些C++程序利用动态规划解决了各种优化问题,包括游戏策略、序列操作、矩阵处理、路径规划和资源分配等。动态规划的核心在于将复杂问题分解为更简单的子问题,通过状态转移方程或表格存储子问题的解,...

    2013年阿里巴巴校园招聘笔试试题研发工程师.doc

    【阿里2013研发工程师笔试题解析】 1. 12345*12345=1105266261 的计算是基于十进制的,因为乘法结果符合十进制计算规则,不是2、8、16进制的特征。 2. HTTP协议是一种请求-响应协议,用于Web(WWW)和电子邮件,但...

    华为模拟机试题

    #### 取石子游戏 **问题描述:** - 有一堆石子,两个人轮流取石子。先取的人第一次可以取任意多个石子,但不能全部取完。之后每次取石子的数量不能超过上次取石子数量的两倍。谁取到最后一个石子谁获胜。 **解决...

    ACM动态规划经典题

    8. **案例分析**:在“ACM动态规划经典题”中,可能会包括诸如“鸡蛋掉落”、“石子游戏”、“最长递增子序列”等经典题目,通过解析这些实例,可以深入理解动态规划的思路和应用。 9. **编程实现**:掌握动态规划...

    动态规划详细介绍.zip

    - 编程竞赛问题:如剪绳子、石子游戏、矩阵链乘法等。 3. **主要类型**: - 状态压缩:当状态数量很大但状态之间有某种编码关系时,可以使用位运算进行状态压缩,减少空间需求。 - 阶段DP:将问题分为多个阶段,...

    IOI国家集训队论文集1999-2019

    骆 骥 -《浅析解 "对策问题" 的两种思路——从《取石子》问题谈起》 孙方成 -《偶图的算法及应用》 孙林春 -《让我们做得更好——从《Parity》的解法谈程序的优化》 王知昆 -《搜索顺序的选择》 许智磊 -《二分...

    南阳理工学院OJ第1版解题报告V1.0.pdf

    Nim游戏的变体,要求玩家理解游戏理论中的必败态和胜利策略。 以上解题报告覆盖了从基础数据结构与算法到高级算法设计的广泛内容,旨在培养学生的逻辑思维能力和编程技巧,同时提供了一个系统的学习路线图,帮助...

Global site tag (gtag.js) - Google Analytics