有关01背包的详细介绍在这就不介绍了,仅给出算法模板
//写在前面
//01问题:有N个物品,每个物品都有其对应的体积和价值
//有一个容量为V的背包问怎样放能使背包中物品的价值最大
//状态转移方程为:f[i][v]=max(f[i-1][v],f[i-1][v-a[i]+b[i])
//当使用空间优化是状态转移方程为:f[v]=max(f[v],f[v-a[i]]+b[i])
#include <iostream>
#include <string.h>
#define maxn 1000
using namespace std;
int N,V;//分别代表物品的数量和背包的容量
int a[maxn];int b[maxn];//分别代表物品的体积和价值
int ans[maxn];//dp数组
int main()
{
cin>>N>>V;
memset(ans,0,sizeof(ans));
for(int i=1;i<=N;i++)cin>>a[i]>>b[i];
for(int i=1;i<=N;i++)
{
for(int j=V;j>=0;j--)
if(j>=a[i]){ans[j]=max(ans[j],ans[j-a[i]]+b[i]);}//状态转移方程
}
for(int i=1;i<=V;i++)cout<<ans[i]<<\' \';
}
/*
5 10
2 6
2 3
6 5
5 4
4 6
*/
继续阅读与本文标签相同的文章
上一篇 :
转型科技企业让41年的格兰仕更显活力年轻
下一篇 :
电商发展催生代运营风起云涌,资本化加速行业整合
-
阿里巴巴20周年年会结束以后,你知道发生了什么吗?
2026-05-18栏目: 教程
-
13年IT老兵:闷头做智能家居体系容易走火入魔
2026-05-18栏目: 教程
-
今天起,我要成为这样的阿里巴巴
2026-05-18栏目: 教程
-
中国智能家居的蝴蝶效应
2026-05-18栏目: 教程
-
2019年回顾 - Joomla前12名SEO扩展和插件
2026-05-18栏目: 教程
