- 最后登录
- 2013-11-11
- 在线时间
- 873 小时
- 阅读权限
- 40
- 注册时间
- 2008-9-15
- 积分
- 1194
- 帖子
- 924
- 精华
- 6
- UID
- 44804
- 性别
- 保密
- 积分
- 1194
- 帖子
- 924
- 精华
- 6
- UID
- 44804
- 性别
- 保密
|
我来谈谈自己的思路:
对于s和k,若先行方必胜,记做g(s,k)=1,反之记做g(s,k)=0
对于前一次对手取x,剩下还有s,若此次选手必胜记做f(s,x,k)=1,反之记做f(s,x,k)=0.
所以有以下递推公式:
f(0,n)=0
g(s,k)=Not (∏f(s-x,x,k)) , x=1 to s-1 Not(x) 表示x为1,等于0;x为0,等于1
f(s,y,k)=Not( ∏f(s-x,x,k)) , x=1 to yk
------------------------
当k确定时,可以把函数f、g括号里的k省略掉
从以上递推公式,可以推出
k=2时:
f(1,n)=1 g(2)=Not(f(1,1))=0
f(2,n)=1 g(3)=Not(f(2,1)*f(1,2))=0
f(3,1)=0 g(4)=Not(f(3,1)*f(2,2)*f(1,3))=Not(0)=1
f(3,n)=1 n>1
f(4,n)=1 g(5)=Not(f(4,1)*f(3,2)*f(2,3)*f(1,4))=0
f(5,1)=0 g(6)=Not(f(5,1)*......)=Not(0)=1
f(5,2)=0 g(7)=Not(f(5,2)*......)=Not(0)=1
f(5,n)=1 n>2
......................
对于其他的k值,利用电脑的高速计算力,结合上述递推公式,应该能很快计算出来。 |
|