March 14, 2009

最近一段时间非常慵懒,加上连日阴雨。除了窝在宿舍看看闲书,偶尔出去打打球之外基本没有什么活动,实在是浪费韶华。

今天出门一瞥,竟然花开燕语春欣然而至也!遂决定从连日冬眠里复苏,重出江湖。

先弄个昨日的题目:

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

Tags: ,,.