作者JameC (CmeJa)
看板Prob_Solve
标题Re: [问题] leetcode 464 can i win
时间Fri Jun 16 12:35:21 2017
这题我能想到的办法,是用位元dp。利用二进位表示剩下的数字的集合,第n位代表数字n。
举个例子,110101就代表5、4、2这三个数字所形成的集合。
假设 dp(state,total) 代表在集合state,还有total的情况下,是否会胜利。
若我们从集合里拿了一个数字n,则状态会转移到:
dp(state^(1<<n), total-n)
只要能找到一个n,使 dp(state^(1<<n), total-n) 为false的话,结果就是true了。
附上AC code:
https://github.com/a9502854519/LeetCode/blob/master/LeetCode464.cpp
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.70.213.197
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Prob_Solve/M.1497587727.A.071.html
※ 编辑: JameC (61.70.213.197), 06/16/2017 12:36:10