版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LZUwujiajun/article/details/82823793
01背包
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
//01背包
//dp[v] = max(dp[v],dp[v-w[i]]+c[i])
int main() {
int n = 5,V = 8; //数目,背包大小
int w[5] = {3,5,1,2,2};//重量
int c[5] = {4,5,2,1,3};//价值
int dp[100];
for(int i = 0;i <= V;i++){
dp[i] = 0;
}
for(int i = 1;i < n;i++){
for(int v = V;v >=w[i];v--){
dp[v] = max(dp[v],dp[v-w[i]]+c[i]);
}
}
int m = 0;
for(int i = 0;i <=V;i++){
m = max(m,dp[i]);
}
printf("%d\n",m);
}
完全背包问题
01背包正向枚举