NIM(1) 一排石头的游戏】的更多相关文章

最近在实习面试过程中,一个朋友遇到了该问题,从简单到复杂的思路如下,希望能给遇到相同问题的朋友一些启发和帮助.(内容来源网络和<编程之美>) 1.问题1 100个苹果 桌上有100个苹果,你和另一个人一起拿,一人一次,每次拿的数量大于等于1小于等于5,问:如何拿能保证最后一个苹果由你来拿? 分析:如果要保证拿最后一个,那么就得保证拿到第94个,以此类推,要拿第94个,就要保证拿到第88个.82.76.70...最后只要保证你拿到第四个就行了,所以看下面: 解答:只需要你先拿,第一次拿4个,以后…
NIM(1)一排石子的游戏 转载:编程之美-MIN(1)一排石头的游戏 1. 原题 1.1 题目 N块石头排成一行,每块石头有各自固定的位置.两个玩家依次取石头,每个玩家每次可以取其中任意一块石头,或者相邻的两块石头,石头在游戏过程中不能移位(即编号不会改变),最后能将剩下的石头一次取光的玩家获胜.这个游戏有必胜策略吗? 1.2 解答 已知:石头数量为N,假设两个玩家分别为玩家A和玩家B,且玩家A先取石头. 当N<=2时,玩家A可以直接取完所有的石头,玩家A有必胜策略. 当N=3时,玩家A先取中…
NIM(2)“拈”游戏分析 1. 问题 有N块石头和两个玩家A和B,玩家A先将石头分成若干堆,然后按照BABA……的顺序不断轮流取石头,能将剩下的石头一次取光的玩家获胜.每次取石头时,每个玩家只能从若干堆石头中任选一堆,取这一堆石头中任意数目(大于1)个石头. 请问:玩家A有必胜策略吗?要怎么分配和取石头才能保证自己有把握取胜? 2. 解法与分析 据说,该游戏起源于中国,英文名字叫做“NIM”,是由广东话“拈”(取物之意)音译而来,经由当年到美洲打工的华人流传出去,这个游戏一个常见的变种是将十二…
NIM(3)两堆石头的游戏 1. 问题描述 假设有两堆石头,有两个玩家会根据如下的规则轮流取石头:每人每次可以从两堆石头中各取出数量相等的石头,或者仅从一堆石头中取出任意数量的石头:最后把剩下的石头一次拿光的人获胜.请问在哪些局面(依据两堆石头中的石头个数)下,先取石头的玩家有必胜的策略. 2. 解法 类似构造质数的筛选方法,这里我们利用找到的必输局面(后取的玩家有必胜策略)来筛去掉能通过一次操作达该必输局面的其它必胜局面(先取的玩家有必胜策略).最后选出的局面都是必输局面. 构造必胜策略: 如…
You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You will take the first turn to remove th…
很简单的一个程序,建议各位初学Java的同学可以试试写写这个程序: import javax.swing.JOptionPane; public class Game { public static void main(String args[]) { JOptionPane.showMessageDialog(null,"欢迎来到石头——剪刀——布游戏!","石头——剪刀——布游戏", JOptionPane.INFORMATION_MESSAGE); int m…
Problem Description Nim is a mathematical game of strategy in which two players take turns removing objects from distinct heaps. On each turn, a player must remove at least one object, and may remove any number of objects provided they all come from…
1 语言基础 1.1 c/c++ [转]C/C++ 存储类型 作用域 连接类型 [转]C/C++内存划分 [转]C/C++除法实现方式及负数取模详解 [转]为什么C++编译器不能支持对模板的分离式编译 C/C++:原码.反码和补码 C/C++:拷贝构造函数 C/C++:类模板 1.2 linux C linux内核-双向链表 linux内核-红黑树 1.3 Java Java:基础   1.4 C#   2 开发平台 2.1 .net 2.2 QT QT-[转]基础(略) QT-[转]2D编程…
通常的Nim游戏的定义是这样的:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动). 结论:(不给证明,可去搜证明) 对于一个Nim游戏的局面(a1,a2,...,an),它是必败态当且仅当a1^a2^...^an=0,其中^表示异或(xor)运算.怎么样,是不是很神奇?我看到它的时候也觉得很神奇,完全没有道理的和异或运算扯上了关系.但这个定理的证明却也不复杂,基本上就是…
: 博弈游戏·Nim游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob.Alice与Bob总是在进行各种各样的比试,今天他们在玩一个取石子的游戏.在这个游戏中,Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有A[i]个石子.每一次行动,Alice和Bob可以选择从一堆石子中取出任意数量的石子.至少取1颗,至多取出这一堆剩下的所有石子.Alice和Bob轮流行动,取走最后一个石子的人获得胜利.假设每一轮游…