Python 为什么可以';我不能用递归法解UVa 12293吗?

Python 为什么可以';我不能用递归法解UVa 12293吗?,python,cuda-uva,Python,Cuda Uva,说明: 有两个完全相同的盒子 其中一个包含n个球,而另一个盒子包含一个球 爱丽丝和鲍勃发明了一种有盒子和球的游戏,游戏如下: 爱丽丝和鲍勃交替移动,爱丽丝先移动 对于每一步,玩家都会找到盒子 里面的球数减少,清空盒子(里面的球将永远被移除), 然后重新分配另一个盒子中的球。重新分配后,每个框应至少包含 一个球 如果玩家不能执行有效的移动,他将失败。典型的游戏如下所示: (5,1)->(2,3)->(1,2)->(1,1) 鲍勃->爱丽丝->鲍勃->爱丽丝 当两个盒子只包含一个球时,鲍勃不能再做任

说明:

有两个完全相同的盒子

其中一个包含n个球,而另一个盒子包含一个球

爱丽丝和鲍勃发明了一种有盒子和球的游戏,游戏如下:

爱丽丝和鲍勃交替移动,爱丽丝先移动

对于每一步,玩家都会找到盒子 里面的球数减少,清空盒子(里面的球将永远被移除), 然后重新分配另一个盒子中的球。重新分配后,每个框应至少包含 一个球

如果玩家不能执行有效的移动,他将失败。典型的游戏如下所示:

(5,1)->(2,3)->(1,2)->(1,1)

鲍勃->爱丽丝->鲍勃->爱丽丝

当两个盒子只包含一个球时,鲍勃不能再做任何事情,所以爱丽丝赢了

问题:如果爱丽丝和鲍勃都足够聪明,谁会赢?假设他们两个都很好 聪明而且总是遵循完美的策略


首先,我认为这是一个递归问题,因为你必须把球最多的盒子一分为二

例如:

def rec(N):
    if N%2:
        return rec(N//2+1)+1
    else:
        return 1
它与给定的样本输入一致,即“2、3、4、0”

但结果是WA,我很困惑,因为我逐字翻译了它

所以我做了一些搜索,似乎互联网上的答案是一样的

他们都是通过同样的模式来解决的

if n==2^i-1:
    Bob wins.
else:
    Alice wins.
嗯,这听起来很合理,并从中得到了一个AC,但我仍然不明白-为什么我的递归解是错误的

经过一些比较,我发现在一些特定的数字上,比如“9,11”,结果是不同的

因为它们不是2^i-1的数字,所以结果应该是“Alice”

但我的解决方案是这样的

(9,1) -> (5,4) -> (3,2) -> (2,1) -> (1,1)
Bob   -> Alice -> Bob   -> Alice -> Bob

(11,1) -> (6,5) -> (3,3)
Bob    -> Alice -> Bob
有什么我不关心的吗?

似乎是