第六章 数学问题 -------- 6.2【Nim游戏】高僧斗法

政府科技管理者如何提升科技成果转化项目进场交易的备案效率?.docx 政府科技管理者如何提升科技成果转化项目进场交易的备案效率? 立即下载

先来看看Nim定理:

//  若干堆硬币,二人轮流取,从一堆硬币中取几个  直到某个人不能取硬币  那这个人就输了
//  3  4  5
//  3  3    把硬币变成相同的  那么你就赢了  因为你可以跟着另一个人一样的取法
//  尼姆定理:  无偏差的二人游戏  =====  尼姆堆
/*
 *      11
 *     100
 *   ^ 101
 * ------------
 *     010
 *  先手:若非 0,必赢,因为可以把局面变成0这个局面
 *      若是 0,必输,因为这个局面本身就是赢的,你随便动一步,那另一个人保持跟你同步,所以最后必输。
 */
public class Nim {

    public static void main(String[] args) {
        int []A = {3,3};
        boolean res = solve(A);
        System.out.println(res);
    }
    
    static boolean solve(int []A){
        int res = 0;
        for (int i = 0; i < A.length; i++) {
            res ^= A[i];
        }
        System.out.println(Integer.toBinaryString(res));
        return res !=0;
    }

}

再来看这道题目:

 

       我们可以将和尚从后往前(从左到右)两两配对,若为奇数则在最高位补充一个假想的和尚,在同一对和尚中,如果对手移动前一个和尚,你总能移动后一个和尚相同的步数,所以一对和尚的前一个和尚与前面一对和尚的后一个和尚之间有多少台阶是没有影响的。所以只要考虑同一对和尚之间有多少台阶就行了,这样就转化为了Nim游戏。

  如图: a与b配对, c与d配对 ,那么b与c之间的台阶是没有影响的,无论b怎么移动,a总能够移动相同的步数。如果该Nim游戏为必胜,那么我们只要移动配对和尚中的后一和尚就好了,如果对手想要破坏这种Nim游戏,即他想移动配对中的前一和尚,那么我们可以移动后面一对的前一个和尚使得依然保持Nim游戏的局势。如果Nim游戏必败,那么先手者可能想破坏Nim游戏,那么后手者按照刚才的方式保持Nim游戏即可。

代码:

import java.util.Scanner;

//   高僧斗法  所有这类的博弈问题都可以归结为尼姆游戏 Nim
/*
 *   高僧斗法   =====>  尼姆游戏
 *   把小和尚位置间的空隙  === >  尼姆堆
 *   偶数:两两组合
 *   奇数:在最高阶补充一个假想的小和尚
 * 
 */
public class Test {
    
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String A = in.nextLine();
        String[] arrayA = A.split(" ");
        int[] NimHeap = new int[arrayA.length - 1];
        for(int i = 1;i < arrayA.length;i++)
            // 两个和尚的间距作为尼姆堆
            NimHeap[i - 1] = Integer.valueOf(arrayA[i]) - Integer.valueOf(arrayA[i - 1]) - 1;
        int sum = 0;
        
        // i+2 就是为了用一个for实现n为奇和偶的两种情况,奇数时最后一个数不分到组中,偶数时需要将其分到组中。
        for(int i = 0;i < NimHeap.length;i = i + 2)
            sum ^= NimHeap[i];

        if(sum == 0)
            System.out.println("-1");
        else {
            for(int i = 0;i < arrayA.length - 1;i++) {
                for(int j = 1;j + Integer.valueOf(arrayA[i]) < Integer.valueOf(arrayA[i + 1]);j++) {
                    NimHeap[i] -= j;
                    if(i != 0)
                        NimHeap[i - 1] += j;
                    sum = 0;
                    for(int k = 0;k < NimHeap.length;k = k + 2)
                        sum ^= NimHeap[k];
                    if(sum == 0) {
                        System.out.println(arrayA[i]+" "+(Integer.valueOf(arrayA[i])+j));
                        return;
                    }
                    NimHeap[i] += j;
                    if(i != 0)
                        NimHeap[i - 1] -= j;
                }
            }
        }
    }
}

结果:

 

山区道路边坡落石隐患检测数据集VOC+YOLO格式241张1类别.md 【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。 立即下载

相关推荐

高空作业栏杆检测数据集VOC+YOLO格式230张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

经典算法之博弈论 高僧斗法

问题描述: 两高僧斗法. 现有若干级台阶(表示N级浮屠).又有若干小和尚随机的站在某个台阶上.最高一级台阶必须站人,其他任意. 两位参加游戏的法师分别指挥某个小和尚向上走任意多级的台阶,但会被站在高级台阶上的小和尚阻挡,不能越过.两个小和尚也不能站在同一台阶,也不能向低级台阶移动. 两高僧轮流发出指令,最后所有小和尚必然都会挤在高段台阶上,再也不能向上移动.轮到哪个高僧指挥时无法移动,则游

striner的博客 526

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

Nim游戏

二人游戏有k>=1堆硬币,每堆有n1,n2~~~nk个硬币,取得最后一枚硬币的人获胜。 规则:每个玩家轮番出场.2.当轮到一个玩家取子时,至少从非空的硬币堆中取得一枚硬币. 先考虑两堆的状况,在k=2时,有两堆硬币,分别有8个和5个硬币。 8,5 5,5 5,2 2,2 0,2 0,0 可见,在两堆的状况下,数目的大小不是关键,关键是硬币数目是否相等。在n1!=n2的状况下一定有先手必胜的策略。因为先手玩家总是可以通过取硬币使得两堆硬币的数目相等。 而后手的玩家因为..

qq_36018057的博客 373

光伏板太阳能板尘土灰尘脏污检测数据集VOC+YOLO格式1006张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

Autodesk全家桶怎么选?AutoCAD、Revit、Fusion 360等7款软件超全对比指南

本文深入对比了Autodesk旗下七款核心软件(AutoCAD、Revit、Inventor、Fusion 360、Maya、3ds Max、Forge)的核心定位与适用场景。针对建筑、制造、创意设计等不同专业需求,提供精准的选型指南,帮助用户根据自身工作流(如二维绘图、BIM协同、产品开发、影视动画)选择最匹配的工具,避免资源浪费并提升效率。

stone的博客 434

(转载)Nim游戏博弈(收集完全版)

Nim游戏的概述: 还记得这个游戏吗? 给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取。最后拿光珍珠的人输。 后来,在一份资料上看到,这种游戏称为“拈(Nim)”。据说,它源自中国,经由被贩卖到美洲的奴工们外传。辛苦的工人们,在工作闲暇之余,用石头玩游戏以排遣寂寞。后来流传到高级人士,则用便士(Pennies),在酒吧柜台上玩。 最有名的玩法,是把十二枚便

lethic的专栏 3711

DOA估计算法从原理到仿真——CBF、Capon、MUSIC算法

从原理出发理解并实现经典的DOA估计算法

m0_55845774的博客 1万+

高僧斗法---博弈论

问题描述   古时丧葬活动中经常请高僧做法事。仪式结束后,有时会有“高僧斗法”的趣味节目,以舒缓压抑的气氛。   节目大略步骤为:先用粮食(一般是稻米)在地上“画”出若干级台阶(表示N级浮屠)。又有若干小和尚随机地“站”在某个台阶上。最高一级台阶必须站人,其它任意。(如图1所示)   两位参加游戏的法师分别指挥某个小和尚向上走任意多级的台阶,但会被站在高级台阶上的小和尚阻挡,不能越过。两个小...

新博客:https://aping-dev.com/ 898

【数学建模】编程手学习路线

在学习过程中,建议注重理论与实践相结合,多进行实例练习和项目实践,以巩固所学知识并提升实际应用能力。同时,保持对新技术和新方法的关注和学习,不断提升自己的专业素养和竞争力。NumPy、Pandas、Matplotlib和Seaborn等库是数据处理和可视化的重要工具。掌握常用机器学习算法的原理和应用,如决策树、支持向量机、神经网络等。学习内容包括微积分、线性方程组、矩阵运算、概率分布、统计推断等。学习内容包括基本语法、函数和模块、面向对象编程、文件操作等。深入了解优化理论和方法,如梯度下降法、牛顿法等。

2301_79586491的博客 2962

stm32cubeMX使用HAL库点亮LED流水灯

目录

weixin_46129506的博客 3798

历届试题 高僧斗法

历届试题 高僧斗法   时间限制:1.0s   内存限制:256.0MB        问题描述   古时丧葬活动中经常请高僧做法事。仪式结束后,有时会有“高僧斗法”的趣味节目,以舒缓压抑的气氛。   节目大略步骤为:先用粮食(一般是稻米)在地上“画”出若干级台阶(表示N级浮屠)。又有若干小和尚随机地“站”在某个台阶上。最高一级台阶必须站人,其它任意。(如图1所示

u010211389的专栏 1780

公文派2025:免费社区版重大安装更新!

距离上一次更新已经过去了将近一年的时间,今天我们带来了全新的免费2025社区版,该版本也是目前最新的版本,无需授权即可使用所有的功能。

似最初 1964

第六章--基本数学问题

-3,-1 负数表示 放在天平左边 —————————————————————————————————————————— 思路:将给定的重量,转为三进制,把所有的 2 全部进一位,再减去 1,比如 7,就是21,2的位置进一位就是101,原位置上减去 1 就是 1,-1, 1 就是 32,-31, 30 ,也就是 9,-3,1 import java.util.ArrayList; impor...

QinLaoDeMaChu的博客 276

AUTOSAR 导入DBC ISOLAR工程配置

ISOLAR工程配置-dbc导入

汽车电子电气 2408

深入解析ZYNQ PL触发PS中断:从原理到创新实践

通过本文,您不仅学会了ZYNQ PL-PS中断的基础实现,更掌握了动态优先级调整中断负载均衡等创新技术。响应延迟降低40%以上系统吞吐量提升2-3倍功耗降低30%支持更复杂的实时应用硬件是身体的骨骼,软件是流动的血液,而中断则是连接二者的神经系统。只有精确控制每一条神经冲动,才能构建真正智能的嵌入式系统。拓展思考如何将AI决策引入中断调度?能否实现跨芯片中断同步?量子计算对中断架构的挑战?

QQ_778132974的博客 417

蓝桥杯 历届试题 高僧斗法(尼姆博弈)

历届试题 高僧斗法 时间限制:1.0s 内存限制:256.0MB问题描述   古时丧葬活动中经常请高僧做法事。仪式结束后,有时会有“高僧斗法”的趣味节目,以舒缓压抑的气氛。   节目大略步骤为:先用粮食(一般是稻米)在地上“画”出若干级台阶(表示N级浮屠)。又有若干小和尚随机地“站”在某个台阶上。最高一级台阶必须站人,其它任意。(如图1所示)   两位参加游戏的法师分别指挥某个小和尚向上走任意...

Crystal_viv的博客 938

保姆级教程:一步步创建 ABAP Text Table

有朋友反馈,问有没有一个自己动手创建 Text Table 的例子,因为自己没有动手实践过,总觉得心里不踏实。这个行为的语义是,ZAI_TYPE_T 这张表的 AI_TYPE 字段值,不能随便维护,必须是表。然后另一个需要添加的字段是 AI_TYPE 这个字段值对应的文本值,本例笔者采用 SAP 标准的。也是自己创建的,很简单的一个 Data Element,类型为 CHAR,长度为 2.依次给主表的 01,02,03 三个字段值维护对应的描述信息,最后效果如下。按照下面的字段结构,创建另一。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4278

Nim游戏博弈(收集完全版)

Nim游戏的概述: 还记得这个游戏吗? 给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取。最后拿光珍珠的人输。 后来,在一份资料上看到,这种游戏称为“拈(Nim)”。据说,它源自中国,经由被贩卖到美洲的奴工们外传。辛苦的工人们,在工作闲暇之余,用石头玩游戏以排遣寂寞。后来流传到高级人士,则用便士(Pennies),在酒吧柜台上玩。 最有名的玩法,是把十二枚便士放

忆梦 2524

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

staircase nim 经典组合游戏

游戏开始时有许多硬币任意分布在楼梯上,共n阶楼梯从地面由下向上编号为0到n。游戏者在每次操作时可以将楼梯j(1<=j<=n)上的任意多但至少一个硬币移动到楼梯j-1上。游戏者轮流操作,将最后一枚硬币移至地上的人获胜。 分析:这个问题与nim游戏的区别在于移走的硬币不是被扔掉而是被放进了另一堆硬币之中,考虑能否将这一部分楼梯排除考虑范围。奇数号楼梯只能将硬币扔到偶数号楼梯之中,同样偶...

weixin_30732487的博客 138

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

蓝桥杯真题高僧斗法Nim运算(java)

参考:工信部十讲 使用到了尼姆游戏思想(Nim算法) 古时丧葬活动中经常请高僧做法事。仪式结束后,有时会有“高僧斗法”的趣味节目,以舒缓压抑的气氛。         节目大略步骤为:先用粮食(一般是稻米)在地上“画”出若干级台阶(表示N级浮屠)。         又有若干小和尚随机地“站”在某个台阶上。最高一级台阶必须站人,其它任意。         两位参加游戏的法师分别指挥某个小和尚向上走...

睡觉不跑堂的博客 589

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

PREV-14高僧斗法(尼姆博弈)Java版,可能是全网最详解了

PREV-14高僧斗法(尼姆博弈)Java版,可能是全网最详解了 前言 高僧斗法,名字倒是挺有意思,大威天龙…这道题中涉及到了一个我从未接触到的知识,尼姆博弈,对于尼姆博弈,必须要知道奇异局势,以及怎么给对手造成奇异局势,我觉得看百度百科尼姆博弈应该就能明白这些了,知道这些就完全足够解决这道题了。好吧,现在来看看这道题。 问题描述 古时丧葬活动中经常请高僧做法事。仪式结束后,有时会有“高僧斗法”的趣味节目,以舒缓压抑的气氛。   节目大略步骤为:先用粮食(一般是稻米)在地上“画”出若干级台阶(表示N级浮屠)

qq_44864169的博客 1247

NIM游戏策略

NIM取子游戏是由两个人面对若干堆硬币(或石子,或。。)进行的游戏,游戏由两个人进行,设有k>=1堆硬币,各堆含有n1,n2,n3,n4.....,nk个硬币,游戏的目的就是选取最后剩下的硬币。游戏规则如下: 1)游戏人交替进行游戏; 2)当轮到每个游戏人取子时,选择这些硬币中的一堆,并从所选的堆中取走至少一枚硬币(可以将所选堆中所有硬币全部取走剩下一个空堆)。 当所有堆变成空堆时,...

weixin_30552635的博客 170

山东省第七届ACM省赛------Triple Nim

Triple Nim Time Limit: 2000MS Memory limit: 65536K 题目描述 Alice and Bob are always playing all kinds of Nim games and Alice always goes first. Here is the rule of Nim game:     There are som

小坏蛋_千千 1208

组合数学——Nim取子游戏

Nim取子游戏是由两个人面对若干堆硬币(或石子)进行的游戏。设有k>=1堆硬币,各堆分别含有N1,N2,……NK枚硬币。游戏的目的就是选择最后剩下的硬币。游戏法则如下:1.两个游戏人交替进行游戏(游戏人I和游戏人II);2.当轮到每个游戏人取子时,选择这些堆中的一堆,并从所选的堆中取走至少一枚硬币(游戏人可以取走他所选堆中的全部硬币);3.当所有的堆都变成空堆时,最后取子的游戏人即为胜

王来安的专栏 8711
上一篇: 第六章 数学问题 -------- 6.1【巧用进制】天平称重问题
下一篇: 第六章 数学问题 -------- 6.4 算法必备求和公式
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值