题目:设有n座山,计算机与人作为比赛的双方,双方轮流搬山。规定每次搬山的数目不能超过k座,谁搬最后一座谁输,每次允许搬山的最大数目(k)。谁都可以先开始搬,双方轮流搬山直到最后一座山搬完为止。这是题目,设计一个程序不难,简单点,我们假设总数n=100,k=10。下边是难题,如何设一个计算机的搬山算法,不论在谁先开始搬的情况下,都是计算机获胜?欢迎大家讨论啊。
解决方案 »
- 怎么结束线程
- 基础问题 关于父类与子类问题
- 求一C#算法
- 关于如何实现多线程并发请求一个服务
- VS2010 SQL Server 2008 Database Project里为何没有Data Generation Plans
- 这句话该怎么改? .net验证过不了呀.
- 请问 关于 C#平台调用 kernel32.dll 的 FindFirstFileW()
- 不小心删除东西了,“剪贴板循环”
- asp.net服务器控件添加事件点击按钮位置变了
- 请问有人知道如何读取大内存的数据呢?
- public static void Remove(this GridView grid, string cbxName)这样的传入参数是什么意思
- c# XML問題...............
100 % 11 = 1,所以先拿的赢,先拿1个,之后无论对手拿多少个(设为k个),你就拿11 - k个,最后就赢了。
这个属于最简单的nim问题,还有许多复杂的变化,比如只可以拿2的幂......
不过可以把规则弄复杂一些,是人都会犯错误的。
是啊,当时我就想了, 如果 k=10的时候 如果 mod 11 = 0 ,那就必输无疑了。哎,看来又是个无解了哦。