目录
题目:
由于此题与0/1背包问题有着密切联系,所以许多知识点都在0/1背包问题中提及,建议先将其阅读清楚后再阅读本文。
Part 1 题目分析
这个题和0/1背包问题的唯一不同点在于,该问题能使用多次某物品,这就需要我们在2重循环的基础上加上一重表示物品数量的循环,并在状态表达式中加入物品个数因素:
f [ i ][ j ]=max( f [ i -1][ j ] , ( f [ i -1][ j -k*wi[ i ]]+k*vi[ i ]) )
标红的便是物品个数因素的表示了,所以很快的程序便可以写出:
#include<bits/stdc++.h>
using namespace std;