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. 解法 类似构造质数的筛选方法,这里我们利用找到的必输局面(后取的玩家有必胜策略)来筛去掉能通过一次操作达该必输局面的其它必胜局面(先取的玩家有必胜策略).最后选出的局面都是必输局面. 构造必胜策略: 如…
最近在实习面试过程中,一个朋友遇到了该问题,从简单到复杂的思路如下,希望能给遇到相同问题的朋友一些启发和帮助.(内容来源网络和<编程之美>) 1.问题1 100个苹果 桌上有100个苹果,你和另一个人一起拿,一人一次,每次拿的数量大于等于1小于等于5,问:如何拿能保证最后一个苹果由你来拿? 分析:如果要保证拿最后一个,那么就得保证拿到第94个,以此类推,要拿第94个,就要保证拿到第88个.82.76.70...最后只要保证你拿到第四个就行了,所以看下面: 解答:只需要你先拿,第一次拿4个,以后…
游戏规则: 有一堆个数为n的石子,游戏双方轮流取石子,满足: 1)先手不能在第一次把所有的石子取完: 2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍). 约定取走最后一个石子的人为赢家,求必败态. 问题分析: 这个和之前的Wythoff’s Game 和取石子游戏 有一个很大的不同点,就是游戏规则的动态化.之前的规则中,每次可以取的石子的策略集合是基本固定的,但是这次有规则2:一方每次可以取的石子数依赖于对手刚才取的石子数. 这个游戏叫做Fibona…
文章来自于我的个人博客:(linux shell)第二章--命令之乐(一)    上一章我们描写叙述了一些linux shell中须要注意的一些语法.接下来我们開始了解linux shell的经常使用命令.let's go... cat 命令: cat本身表示拼接(concatenate).cat命令有一些经常使用參数,像-n,-s等,我们以下逐一介绍: 假设你想高速查看一个文本文件内容.就能够使用cat命令: cat file 假设你想一次查看多个文件内容.也是在后面加上文件路径就可以 cat…
一.Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者.现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者. Input 输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的数目,a和b都不大于1,000,000,000. Output 输出对应…
NIM游戏,NIM游戏变形,威佐夫博弈以及巴什博奕总结 经典NIM游戏: 一共有N堆石子,编号1..n,第i堆中有个a[i]个石子. 每一次操作Alice和Bob可以从任意一堆石子中取出任意数量的石子,至少取一颗,至多取出这一堆剩下的所有石子. 两个人轮流行动,取走最后一个的人胜利.Alice为先手. 我们定义: P:表示当前局面下先手必败 N:表示当前局面下先手必胜 N,P状态的转移满足如下性质: 1.合法操作集合为空的局面为P 2.可以移动到P的局面为N,这个很好理解,以为只要能转换到P局面…
1. Animation动画   在Android 中,系统提供了动画类 Animation ,其中又分为四种动画效果: ● AlphaAnimation:透明度渐变动画 ● ScaleAnimation:渐变尺寸缩放动画: ● TranslateAnimation:移动动画 ● RotateAnimation:旋转动画   这4种动画效果的创建方法如下: (1)  AlphaAnimation 透明度渐变动画 Animation alphaA = new AlphaAnimation(floa…
剪切区域也称为可视区域,是由画布进行设置的:它指的是在画布上设置一块区域,当画布一旦设置了可视区域,那么除此区域外,绘制的任何内容都将看不到:可视区域可以是圆形.矩形等等. 画布提供了三种设置可视区域的方法. 1.通过坐标,设置矩形可视区域clipRect(int left,int top,int right,int bottom)作用:为画布设置矩形可视区域第一.二个参数:为可视区域的左上角第三.四个参数:为可视区域的右下角 2.利用 Path 来设置可视区域的形状clipPath(Path…