摘要:
01背包问题: 有n个物品,每个体积为v[1-n],问这些物品能否装满体积为b的背包,物品不能切分,形状因素忽略不计。求背包最小剩余空间。阶段:以v数组的下标划分状态:opt[]为0或1状态转移方程:opt[j] = opt[j - v[i]]思路: opt[b+1]代表体积为0~b的背包能否被装满,0否1能; 于是就要知道所有物品体积组合之和。 我理所因当想到用循环,多层循环强行组合不可能,因为循环层数不确定。 可以用两层循环如//key!,先记一个物品v1体积的opt[v1]=1,接着只要体积v2于之前出现过的体积v1加上另一个物品的体积则opt[v2]=1。 注意第二层必须用倒推,否则 阅读全文
浙公网安备 33010602011771号