Nim取子游戏

组合数学之第一章之完美覆盖,断层线,幻方,拉丁方,Nim取子游戏 第一章 一、完美覆盖 1. 2-牌(多米诺牌)的完美覆盖 一个m*n的棋盘存在完美覆盖    m和n中至少有一个是偶数。 2. 证明2-牌的完美覆盖 一个棋盘上写着白、黑、白……(写的规则:每上下两个相邻的方格必须有白有黑;没左右两个方格也必须有白有黑)。 白的个数必须=黑的个数,才有完美覆盖 3. 1*b牌的的每晚覆盖 一个m*n的棋盘可以被b-牌完美覆盖  ó b是m的因子或b 阅读详情
    据说,Nim(拈),源自中国,经由被贩卖到美洲的奴工们外传。辛苦的工人们,在工作闲暇之余,用石头玩游戏以排遣寂寞。后来流传到高级人士,则用便士(Pennies),在酒吧柜台上玩。
最有名的玩法,是把十二枚便士放成3、4、5三列,拿光铜板的人赢。后来,大家发现,先取的人只要在3那列里取走2枚,变成了1、4、5,就能稳操胜券了,游戏也就变得无趣了。于是大家就增加列数,增加铜板的数量,这样就让人们有了毫无规律的感觉,不易于把握。

    直到本世纪初,哈佛大学数学系副教授查理士•理昂纳德•包顿(Chales Leonard Bouton)提出一篇极详尽的分析和证明,利用数的二进制表示法,解答了这个游戏的一般法则。

    我们先从一个简单的问题还是讨论,把所有铜板分为两堆。(1)假设这两堆铜板数量不一样,玩家1把数量多的一堆拿走一部分,使得两堆铜板的数量一样多,接下来,玩家1只需要模仿玩家2从另一堆中取走相同的铜板就能获胜,也就是说玩家1必胜。(2)加入两堆铜板数量一样,玩家2只要模拟玩家1,从另一堆中取走相同的铜板就能获胜,这种情况玩家2必胜。

    那么假设是把铜板分成k堆呢?

    我们把每一堆铜板的数量用二进制数表示,假设k = 4,每一堆为:7,9,12,15,用二进制表示为:

0111

1001

1100

1111

每一位的1加起来:3323,因为每一位的个数都不相同,所以,玩家1必胜。玩家1只需要在第一次取走(1101)2=13个数,以后每一次玩家2取走后,玩家1把石子变回平衡就能实现必赢的局面了。

组合数学取子游戏nim Nim is a 2-player game featuring several piles of stones. Players alternate turns, and on his/her turn, a player’s move consists of removing one or more stones from any single pile. Play ends when all the stones have been removed, at which point the last player to have moved is declared the winner. Given a position in Nim, your task is to determine how many winning moves there are in that position. 组合数学取子游戏代码实现。 立即下载

相关推荐

另类单堆拈游戏及其源代码 减治法实现

算法导论 算法作业 算法参考 减治法实现

取石子游戏--尼姆博弈

尼姆博弈模板题

qq_52100754的博客 2044

Obsidian笔记同步实战:基于Git的私有化部署与自动化管理

本文详细介绍了如何利用Git为Obsidian笔记构建私有化、自动化且免费的同步方案。通过安装配置Git与Obsidian-git插件,结合Gitee等远程仓库,实现笔记的版本管理、多设备同步与自动备份,打造安全可靠的知识管理体系。

y7z8a的博客 272

集合nim(C++)

给定 n 堆石子以及一个由 k 个不同正整数构成的数字集合 S。现在有两位玩家轮流操作,每次操作可以从任意一堆石子中拿取石子,每次拿取的石子数量必须包含于集合 S,最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。输入格式第一行包含整数 k,表示数字集合 S 中数字的个数。第二行包含 k 个整数,其中第 i 个整数表示数字集合 S 中的第 i 个数 si。第三行包含整数 n。第四行包含 n 个整数,其中第 i 个整数表示第 i 堆石子的数量 hi。输出格式。

falldeep的算法世界 2万+

避开CPU瓶颈:手把手教你用RK3588的DMA-BUF实现V4L2到NPU的零拷贝数据流

本文详细介绍了如何在RK3588平台上利用DMA-BUF实现V4L2到NPU的零拷贝数据流,显著提升异构计算性能。通过实战指南展示了如何配置摄像头采集、RGA图像预处理和NPU推理优化,最终实现CPU占用率降低60%、延迟减少60%的效果,特别适合YOLOv5等AI推理应用的高效部署。

weixin_30374009的博客 571

项目实战第四十七讲:易宝支付对接详解(保姆级教程)

本文是项目实战第四十七讲,易宝支付对接详解。1、xxl_job 接入fix;2、支付接口,将thirdOrderNo赋初始值,并将数据库中third_Order_No设置为非空;3、性能提效:将深拷贝改为字符赋值,提升程序性能;先不改动。

Jet_qi的博客 2680

取石子游戏(尼姆博弈)

m堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出怎样取子.例如5堆 5,7,8,9,10先取者胜,先取者第1次取时可以从有8个的那一堆取走7个剩下1个,也可以从有9个的中那一堆取走9个剩下0个,也可以从有10个的中那一堆取走7个剩下3个. Input 输入有多组.每组第1行是m,m<=200000. 后面m个非零正整数.m=0退出. Output 先取者负输出No.先取者胜输出Yes,然后输出先取者第1次取子的所有方法.如果从有a个石子的堆中取若干个后剩下

star_yongheng的博客 720

代谢组数据分析(十五):基于python语言构建PLS-DA分类预测模型

本教程阐述典型代谢组学数据分析工作流程,用于二元分类结果的研究。流程主要步骤如下:首先从 Excel 表格导入代谢物与实验数据,接着基于汇总 QC 进行数据清洗。随后借助主成分分析可视化检查数据质量,再开展两类单变量统计。之后运用偏最小二乘判别分析(PLS - DA)实施多变量分析,此过程涵盖模型优化(对比 R2 与 Q2)、置换测试及明确模型预测指标、确定特征重要性、对模型预测数据进行可视化。最终将统计表格导出至 Excel 表格,完整呈现从数据导入到分析结果输出的全过程。

专注生信领域 2876

博弈论(Nim游戏)

题目要求:给你 n 堆石子,两个人轮流取石子,每次选择一堆,可以取出这一堆的任何数量的石子,直到某个人无法再取出任何石子,则另一个人就赢了。因此我们就可以创造先手的必胜态,则对于后手的来说一定是必输态。阶上去,直到最后台阶为0时,无法再移动,问能否先手必胜?,则可以证明,一个必胜态一定可以转换得到一个必输态。第一个人取第一堆,第二个人取第二堆,则第一个人必输。则通过上面的描述,一个必胜态一定可以转换为必输态。的位置,则最后就可以把一个必胜态转变为必输态。的情况,则就是甲先手赢的选择的情况。

ylh的博客 2393

华为面试手撕真题【最长不重复子串】

给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。

MISAYAONE的博客 1万+

GEE高阶应用——如何绘制2000-2022年土地利用变化轨迹时序图

土地利用变化是指在一定时间范围内,土地利用类型和结构发生的变化。时序变化是指这种变化随时间的推移而发生的序列变化。土地利用变化轨迹的时序变化具体介绍如下:首先,土地利用变化轨迹的时序变化体现在土地利用类型的演变上。在过去的几十年里,随着人口的增加、经济的发展和城市化的推进,土地利用类型发生了显著的变化。传统的农田逐渐减少,而城市、工业、交通、居住等用地的面积不断扩大。同时,随着环境保护意识的提高,生态保护用地、森林、湿地等绿色用地的面积也在增加。

此星光明博客 1113

关于博弈基础知识的总结:巴什博弈(Bash Game)、威佐夫博奕(Wythoff Game)、尼姆博奕(Nim Game)

文章PDF文档:http://www.kuaipan.cn/file/id_32020291156705322.html 博弈论是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论。 基础的基础 a) 当前执行者想赢。这个是必要的,有时候题目中判别胜负的条件会与平时练习的恰好相反,此时你就应该按照题目要求思考,即在经典模型中思考当前执行者想输的策略。

逆水行舟 5987

jieba分词

jieba

sikh_0529的博客 1万+

组合数学——Nim取子游戏

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

王来安的专栏 8711

AI Agent在智能腰带中的姿势矫正与提醒

随着人们生活方式的改变,长时间不正确的坐姿、站姿等不良姿势问题日益普遍,这不仅会导致身体疲劳,还可能引发颈椎病、腰椎病等多种健康问题。智能腰带作为一种可穿戴设备,具有实时监测人体姿势的潜力。本研究的目的是将AI Agent引入智能腰带,实现对人体姿势的准确识别、矫正与提醒功能。本研究的范围涵盖了从AI Agent的核心算法原理到智能腰带的实际开发与应用。包括传感器数据的采集与处理、机器学习算法的选择与训练、智能腰带的硬件设计与软件开发,以及在不同场景下的实际应用测试。本文共分为十个部分。

AI 原生应用开发的博客 344

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

组合数学——Nim取子游戏 太有趣了

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

ON THE WAY 3721

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

nim取子游戏 阶梯博弈

问题描述: 有k堆石子,两个人I,II分别轮流取子。 一次可以从一堆中至少取一个,至多取完。 最后一个取完的胜利。 问I先手,是否有必胜的策略。 ========================================================================== 先考虑个简单的2堆石子。

u010385646的专栏 1536

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

一道面试题(Nim取子游戏)——如何将数学思维应用到编程中

今天偶然遇到一道Nim取子游戏的题,大意如下: 有16颗石子,两个人轮流取子,每次只能取一颗、两颗或者四颗石子,最后取完石子的人为负。问,先取子的人还是后取子的人有必胜策略。 题目非常简单,已经非常熟悉博弈论或者Nim取子游戏的大牛,请移步进阶话题。 寻找思路 拿到一个特殊化的题目,如果没有思路的话,可以考虑先将题目转换为一般化的形式,再将一般化形式的题目特殊化到简单实例...

anjiao62582的博客 279

poj 2234 博弈论Nim取子游戏

题意:Nim取子:给定N堆石子,其中第i堆有Pi颗石子。每次从某一堆里选出若干石子去掉,可以去掉这一堆中的全部石子,但不能不去。两人轮流操作,不能继续取的那一方算作输。 思路:所有石子数量的异或不为0,先取者必胜,反之亦然。操作准则是使得石子数量异或成为0。方法为:设石子中数量最多的堆为A个,异或和为S,则从A中去掉A-S^0个石子

dearmango 722

Nim取子游戏 (SG函数)

Nim游戏(转载) Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论 Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartial Combinatorial Games”(以下简称ICG)。满足以下条件的游戏是ICG(可能不太严谨):1、有两名选手;2、两名选手交替对游戏进行移动(move),每次一步,选手可以在(

3363

博弈论 NIM取子问题 组合数学

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

Assassin 2231

NIM博弈证明

古代的Nim⁡\operatorname{Nim}Nim取石子游戏是由两个人面对若干堆石子进行的游戏。 设有n≥2n\ge 2n≥2堆石子,各堆分别含有A1、A2⋯AnA_1、A_2\cdots A_nA1​、A2​⋯An​个石子。 游戏的目的就是选取最后剩下的石子。游戏规则如下: 游戏人交替进行游戏 当轮到每个游戏人取子时,选择这些石子中的一堆,并从所选的堆中取走至少一个石子 (游戏人也可以取...

lb2003 694
上一篇: 筛选法求欧拉函数phi
下一篇: 拓扑排序优化
WellerZhao
博客等级 码龄15年 11粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值