二维背包,也是一种背包问题。
二维背包问题,主要就是说的背包放置的物品,需要两种代价才能实现,就像是两个01背包合成成了一个题目。
继续拿我们oj上题目采药三来说,给出链接:采药3
之前做的采药1用的是二维数组,一株是一维,另一维是时间,现在有承重和容积两种限制,那么我们就采用三维数组c[n][m][t],下一株都是跟上一株的同一状态相比较。设定承重和容积为w1[n]和w2[n],价值v[n]。
表因为是三维,不好写,所以不写了。
得出表达式:
c[n][m][t] = max(c[n-1][m][t], c[n-1][m-w1[n]][t-w2[n]]+v[n])
这样的话,根据上面这个式子,可以用二维数组来写出我们的程序。