写在前面的话:本人不善言辞,如有问题,请多指教。
一、01背包问题(C++)
这想必不用我多说吧,学过动态规划的都会,这里就不多讲了。
测试数据:
输入:
10 4
2 1
3 3
4 5
7 9
输出:
12
代码:
#include <bits/stdc++.h>
using namespace std;
int w[31],c[31],f[205];//数组长度看具体情况
int main(){
int n,m;//n为物品数量,m为背包容量
cin>>m>>n;
for(int i=1;i<=n;i++){
cin>>w[i]>>c[i];//输入
}
for(int i=1;i<=n;i++){
for(int j=m;j>=w[i];j--){
f[j]=max(f[j],f[j-w[i]]+c[i]);//动态规划体现在这步
}
}
cout<<f[m];
return 0;
}
接下来,重头戏来了。
二、01背包问题(Python)
有基础的人可以直接把C++代码转换为Python代码(大家应该都有基础吧),不过这里再讲一讲,巩