编程之美 set 18 拈两堆石子游戏(3)
题目
假设有两堆石头, 有两个玩家按照如下规则轮流取石头
每个人每次可以从两堆石头中取出数量相等的石头, 或者仅从一堆石头中取出任意数量的石头
最后把剩下的石头依次拿光的人取胜
首先取石头的人能否赢得这个游戏
分析
1. 我们先定义先取者有必胜策略的局面为 "安全局面", 而先取者无必胜策略的局面为 "不安全局面"
2. 根据枚举 (10,10) 范围内石头的可能组合, 发现不安全局面的局面有 <1,2>, <3,5>, <4,7>...
3. 不安全局面的特点是 b = a + i, i = 1, 2, 3.., 若 a1, b1, ... an-1, bn-1 已经求得, 则定义 an 为未出现在这 2n-2 个数中的最小整数
4. 由以上的分析, 可以从下到上去推, 自底向上, 时间复杂度为 o(N)
5. 转化成数学问题, 求解通项公式, 时间复杂度降低到 o(1)
编程之美 set 18 拈两堆石子游戏(3)的更多相关文章
- HDU2177:取(2堆)石子游戏(威佐夫博弈)
Problem Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同 ...
- HDU 2176 取(m堆)石子游戏(Nim)
取(m堆)石子游戏 题意: Problem Description m堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出怎样取子.例如5堆 5,7,8,9,1 ...
- HDU-2176 取(m堆)石子游戏
http://acm.hdu.edu.cn/showproblem.php?pid=2176 第三种博弈,但一定要注意优化时间 取(m堆)石子游戏 Time Limit: 3000/1000 MS ( ...
- HDU 2176:取(m堆)石子游戏(Nim博弈)
取(m堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU-2177 取(2堆)石子游戏 (威佐夫博奕)
Problem Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同 ...
- B - 取(2堆)石子游戏
有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者. ...
- ACM-尼姆博弈之取(m堆)石子游戏——hdu2176
取(m堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDUOJ-----2175取(m堆)石子游戏
取(m堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDUOJ-----取(m堆)石子游戏
取(m堆)石子游戏 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Sub ...
随机推荐
- Android开发之Google Map
2013-07-03 Google Map 提供三种视图: 1. 传统的矢量地图,提供行政区域.交通以及商业信息等. 2. 不同分辨率的卫星照片,与Google Earth 基本一样. 3. 地形地图 ...
- 最近,波兰的程序员Chris(也叫KreCi)公布了他的第十四期程序员收入报告
http://www.aqee.net/developer-income-report-14/最近,波兰的程序员Chris(也叫KreCi)公布了他的第十四期程序员收入报告.数据显示,上月是目前为止他 ...
- MVC之Ajax.BeginForm使用详解之更新列表 mvc验证jquery.unobtrusive-ajax
MVC之Ajax.BeginForm使用详解之更新列表 1.首先,请在配置文件设置如下:(该项默认都存在且为true) <add key="UnobtrusiveJavaScrip ...
- 摘:static,const,inline,define的意义
static 1) 产生背景 引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想 ...
- 常用RGB颜色表
作者:张家珩2005-12-02 20:51分类:默认分类 R G B 值 R G B 值 R G B 值 黑色 0 0 0 #000000 黄色 255 255 0 #FFFF0 ...
- connect: Network is unreachable解決方法
connect: Network is unreachable解決方法 解決方式:請確認ifcfg-eth0檔案設定 指令如下: vi /etc/sysconfig/network-scrip ...
- Ubuntu 14.04主机上部署k8s集群
部署结构 3台虚拟机,其中1台作为master,2台作为minion,都安装了最新版本的docker engine(目前是1.11.2) k8s版本是1.3.0 主要问题 部署步骤基本按照官方文档:h ...
- CYQ学习主要摘要4
http://www.cnblogs.com/cyq1162/archive/2010/11/03/1867642.html Xml的处理 http://www.cnblogs.com/cyq1162 ...
- ISTQB测试人员认证 初级(基础级)大纲
ISTQB测试人员认证 初级(基础级)大纲 ---中文修订版本1(2015年5月6日) 2015-06-22 大纲pdf下载 ISTQB资料中心 在课程大纲中,每个章节都会提供相应的认知水平要求: ...
- Ununtu 15.04 安装MySql(Django连接Mysql)
本文介绍Ubuntu 15.04下安装MySQL ubuntu 15.04安装mysql django项目连接mysql 一.安装数据库 1.sudo apt-get install mysql-se ...