java 递归算法 背包问题!!
背包问题.设有一个背包可以放入物品的重量为s,现在n件物品,重量分别为w[0],w[1]......w[n-1].问题是能否从这n件物品中选择若干件放入此背包中使得放入的重量之和正好等于s. 如果存在一种符合上述要求的选择,则称此背包问题有解;否则称此背包问题无解. 试用分而治之的算法设计求解背包问题的函数.
提示:此背包问题的递推定义如下(其中true表示有解,false表示无解):
knap(s,n)={true s=0 此时问题有解
knap(s,n)={ flase s<0 总重量不能为负解
knap(s,n)={flase s>0且n<1 物品件数不能为负数
knap(s,n)={knap(s,n-1) s>0且n>=1 所选物品不包括w[n-1]时
knap(s,n)={knap(s-w[n-1],n-1) s>0且n>=1 所选物品包括w[n-1]时