Nim博弈游戏

给定n堆石子,每次每人能从一堆石子中取若干个石子(不能不取),最后不能取石子者败

对于这个游戏,我们要判断的是,给定局势下,先手者胜还是败

设先手胜的局势为N-postion,先手败的局势为P-postion

可以移动到P-postion的局势叫做N-postion,只能移动到N-postion的局势叫做P-postion。

1、只有一堆的情况下先手胜

2、只有两堆

  a、数目相等的局势,先手败,因为不管先手怎么取,后手都能在另一堆中复制先手的取法

  b、数目不相等的局势,先手胜,先手可以在石子多的那一堆取走一定的石子,使得两堆的石子数相等,然后参考情况a分析,可知先手胜

3、两堆以上的情况。将局势分为两个子局势x,y

  那么来分析一下局势的加法与异或之间的关系,

  将局势分为两个子局势n和m,如果两个子局势相同,则表示n==m,将局势如果可以先手胜利,成为n胜或m胜

  局势异或等于0,表示先手败,不等于0,表示先手胜

  若n胜m胜 如果n==m ,n^m==0, 如果n!=m, n^m!=0 ,说明该情况下的局势加法满足异或

  若n胜m负 先手者在n局势先手获得胜利,然后使得后手者在m局势先手,获得失败,所以先手胜  n!=0,m==0, n^m!=0,说明该情况下的局势加法满足异或

  若n负m胜 同上

  若n负m负 先手者在n局势取得失败,然后又在m局势先手取得使得,所以最终失败。   n==0,m==0,n^m==0, 说明该情况下的局势加法满足异或

所以Nim游戏的判断是否先手胜就变成了判断n堆石子的异或是否不等于0

那么怎么获得必胜策略是怎么走的呢?即将某堆得石子取走k个,使得的石子异或等于0

设有n堆石子,a1,a2,...ai...an

对于ai,取得另外n-1堆得石子的异或s  

如果 ai > s   ,  那么k= ai - s,  这样子 (ai-k)==s  即 ai^s==0

转载于:https://www.cnblogs.com/justPassBy/p/4366524.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

显示多个页面退出登陆_软件测试小白如何第一次登陆时给LINUX的配置网络

接着上一期分享,今天分享的是虚拟机配置完成以后我们接下来怎么做首先我们进入终端登录以后先显示的是user用户点击user输入密码,回车或者点击sigh ln第一次进入会让你选择语音,你可以根据自己的喜好决定如果安装的可视化界面,你的…

SQL Server的聚集索引和非聚集索引

微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)……   (一)深入浅出理解索引结构   实际上,您可以把索引理解为一种特殊的目…

python math库函数源码_11. math库函数

一、math库介绍内置数学类函数库,math库不支持复数类型,仅支持整数和浮点数运算。math库一共提供了:4个数字常数44个函数,分为4类:16个数值表示函数8个幂对数函数16个三角对数函数4个高等特殊函数库中函数不能直接使用…

原理 msc_计算机网络原理梳理丨无线与移动网络

目录无线网络移动网络IEEE802.11蜂窝网络移动IP网络其它典型无线网络介绍无线网络无线网络的基本结构无线主机无线链路基站网络基础设施自组织网络(Ad Hoc网络)无线链路与无线网络特性无线链路与有线链路主要区别:1.信号强度的衰弱2.干扰3.多径传播4.隐藏终端移动网…

如何卸载rpm

首先通过 rpm -q <关键字> 可以查询到rpm包的名字 或者rpm -qa|grep 关键字 然后 调用 rpm -e <包的名字> 删除特定rpm包 如果遇到依赖&#xff0c;无法删除&#xff0c;使用 rpm -e --nodeps <包的名字> 不检查依赖&#xff0c;直接删除rpm包 如果恰好有多…

python实现逐步回归分析_Python实现逐步回归(stepwise regression)

逐步回归的基本思想是将变量逐个引入模型&#xff0c;每引入一个解释变量后都要进行F检验&#xff0c;并对已经选入的解释变量逐个进行t检验&#xff0c;当原来引入的解释变量由于后面解释变量的引入变得不再显著时&#xff0c;则将其删除。以确保每次引入新的变量之前回归方程…

二维数组最大子数组和

一&#xff0e;实验题目 求一个二维数组中和最大的子数组。 二&#xff0e;实验思路 基于我们第一次合作时求的一位数组最大子数组&#xff0c;加上一层循环来遍历二维数组中的所有子矩阵的情况。 第一步&#xff1a;先利用上次的方法求每一行的情况&#xff0c;将每行结果存入…

木炭怎么获得_木炭机一体化流程中制做木炭是怎么完成的

关注我们获得更多精彩内容木炭机一体化流程中制做木炭是怎么完成的&#xff0c;木炭机生产线中炭化炉是核心设备。炭化炉炭化过程决定了木炭质量和效果。木炭机生产线中炭化过程需要经历三个不同温度阶段。三个不同温度阶段对薪棒的炭化作用不同。炭化好坏标志着木炭机制炭效果…

HDU 4540

简单得不能再简单的DP了。 #include<iostream> const int inf1<<30; using namespace std; int map[22][22]; int dp[22][22];//表示前i个时刻在第j个位置时的最小消耗能量 int n,m;int main(){while(~scanf("%d%d",&n,&m)){for(int i1;i<n;i…

esp8266舵机驱动_arduino开发ESP8266学习笔记四—–舵机

arduino开发ESP8266学习笔记四—–舵机使用时发现会有ESP8266掉电的情况&#xff0c;应该是板上的稳压芯片的限流导致的&#xff0c;观测波形&#xff0c;发现当舵机运转时&#xff0c;电源线3.3V不再是稳定的3.3V&#xff0c;大概是在3.0V到3.3V范围内高频振动&#xff0c;这应…

【转载】网易将军令工作原理

最近开始玩梦幻手游&#xff0c;为了领以前端游的返利必须输入将军令&#xff0c;那个已经一年没用了&#xff0c;输入了几次都提示错误&#xff08;后来证实是系统繁忙而已&#xff09;&#xff0c;我以为是将军令时间不对了&#xff0c;所以用了下官网的修复功能。也对将军令…

返回数据_多层数据返回匹配值

↑↑↑点击上方图片&#xff0c;了解详情Access Switch函数示例&#xff0c;分享源码。一、问题描述&#xff1a;想实现如下功能&#xff0c;发现用iff嵌套方式太复杂&#xff0c;有没有更简单的方法&#xff1f; A1≤750 返回5.0 750&#xff1c;A1≤865 返回5.…

通知中心 NSNotificationCenter 的简单使用方法

NSNotificationCenter(通知中心)【注意】需再dealloc中移除观察者获取通知中心单例对象NSNotificationCenter *center[NSNotificationCenter defaultCenter]; 常用方法:1.注册观察者- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(…

solaris mysql_配置Solaris下自带的MYSQL

Solaris自带了mysql服务器&#xff0c;省事不少。用的时候只有小小的配置下就可以搞定。1.用ROOT用户登陆系统&#xff0c;在终端输入/usr/sfw/bin/mysql_install_db2.建立mysql user和 group&#xff1a;# groupadd mysql# useradd -g mysql mysql# chgrp -R mysql /var/mysql…

mysql 1786_mysql错误处理之ERROR 1786 (HY000)

ERROR 1786 (HY000)【环境描述】msyql5.6.14【报错信息】执行create table ... select的时候遇到报错&#xff1a;复制代码 代码如下:db1 [test] [23:01:58]> create tablelgmnr_bak select * from lgmnr;ERROR 1786 (HY000): CREATE TABLE ... SELECTis forbidden when GLO…

Java入门第二季

面向对象 对象&#xff1a;世间万物皆对象&#xff0c;所谓对象&#xff0c;并不是一个抽象的概念&#xff0c;泛指我们生活中的各式各样的事物都称之为对象。 类和对象的关系 类是抽象的概念&#xff0c;是对象的模板 对象是具体的事物&#xff0c;是类的具体实例 面向对象…

HDU1114 Piggy-Bank 完全背包

题意&#xff1a; 给出一个存钱罐的空罐时的质量和装了钱之后的质量&#xff0c;再给出一些硬币的质量和相应的价值&#xff0c;问存钱罐里的钱最少可能为多少。 这道题就是完全背包的问题&#xff0c;注意初始化。 完全背包与01背包不同的是第二次遍历的时候要顺序而已。 初始…

mysql备机写binlp_MySQL主从搭建,实现读写分离(基于docker)

一 主从配置原理mysql主从配置的流程大体如图&#xff1a;1)master会将变动记录到二进制日志里面&#xff1b;2)master有一个I/O线程将二进制日志发送到slave;3) slave有一个I/O线程把master发送的二进制写入到relay日志里面&#xff1b;4)slave有一个SQL线程&#xff0c;按照r…

前后台的验证

为什么前台后台都需要验证&#xff1f;客户端的js&#xff0c;可以屏蔽&#xff0c;方法有多中&#xff08;浏览器里面就可以设置屏蔽js&#xff09;所以&#xff0c;服务端也要验证&#xff0c;从安全性角度来讲其中隐藏域也要判断转载于:https://www.cnblogs.com/hupengyin/p…

mysql如何管理空间_管理空间的mysql数据库

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…