如果可以重复选数字,那么如果 target % (maxChoosable + 1) == 0 那么玩家2必胜
,如果不是0那么玩家1第一步先拿到target % (maxChoosable + 1),然后对应玩家2拿
的数字来拿 maxChoosable + 1 - player2Num,最后就刚好抢到target。
如果不可以重复选数字,有一个初步的想法,可以把这个问题转化成一个有2^
maxChoosable 个节点的图,开始在sum = 0的节点上,玩家1和2轮流walk,走到某些节
点时候会获胜。比如1 2 3 4, target = 10,玩家2的winning state是 1 2 3 4,玩家
1没有所以玩家2必胜;如果target = 9 玩家2的winning state是1 2 3 4,玩家1是2 3
4,所以玩家2只要拿到1就胜了,也是必胜;如果target = 8 玩家1多了1 3 4是
winning state,这时玩家1只要取4然后玩家2无论怎么取都会输。
但是感觉这个code实现起来太麻烦了,坐等楼下大神给出答案。