最近一段时间非常慵懒,加上连日阴雨。除了窝在宿舍看看闲书,偶尔出去打打球之外基本没有什么活动,实在是浪费韶华。
今天出门一瞥,竟然花开燕语春欣然而至也!遂决定从连日冬眠里复苏,重出江湖。
先弄个昨日的题目:
Subset SUM Problem
{a[1],a[2]...a[k]} choose some a[i]s
S.T.
\sum a[i]=T T is a positive integer.
其实就是个简单的0-1背包问题
可以用DP来解:
f(i,x)=Max{ f(i-1,x-a[i])+a[i] f(i-1,x) }
这个是背包的变种。。i.e. 重量w[i]和价值c[i]是一样的。
采取非递归算法(只需要从f(1,x)开始往上推就好了),复杂度 O(KT)
那如果这个背包的解是f(k,T)=T那么问题就解决了。
-----------------
不了解0-1背包的同志,可以看看这个Zero One Knapsack Problem
