完全背包就是不限物品个数,相当于有无限个;举个栗子
有N种物品和一个容量为m的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。
核心代码:dp[i][j]=max(dp[i][j],dp[i-1][j-k*c[i]]+k*w[i]);0<=k*c[i]<=v
模板:
#include<bits/stdc++.h>
using namespace std;
const int maxn=555;
int dp[maxn][111111];
int c[maxn],w[maxn];
int n,v;
int main()
{
int i,j,k;
while(~scanf("%d %d",&n,&v))
{
memset(dp,0,siz