给定n个检查,每个任意(整数)货币值,决定检查是否可以分成具有相同货币值的两个部分。提出多项式算法
我非常想到如何解决这个问题。有没有一种算法可以在多项式时间内解决这个问题,还是NP-Complete?
给定n个检查,每个任意(整数)货币值,决定检查是否可以分成具有相同货币值的两个部分。提出多项式算法
我非常想到如何解决这个问题。有没有一种算法可以在多项式时间内解决这个问题,还是NP-Complete?
是的,这是一个NP完整的问题。它是the subset sum problem的变体。
事实上,你可以使用动态规划在O(n * sum/2)中解决这个问题,首先将所有检查总结为varaibel总和,然后你可以对检查值执行dp(接受或离开它或采取它),并在最后检查这个总和是否等于s/2。
可能是这个问题最好放在[编程拼图](http://codegolf.stackexchange.com/)或[令人费解](http://puzzling.stackexchange.com/) – yaitloutou
@yaitloutou我认为这个问题在这里比在迷惑或编程谜题中讨论得多。最多也许应该发布到cs.stackexchange.com – user31264
@ user31264谢谢你的澄清 – yaitloutou