笔记——01背包
来源:互联网 发布:仓库数据表格 编辑:程序博客网 时间:2024/05/22 01:54
/*
01背包
有n个物品,每个物品有重量w,价值v,现有一个m容量的背包,每个物品只能选一次
所能获得的最大价值为多少
dp[i][j],i表示当前的物品数,j为当前的重量,dp[i][j],在前i个物品,j的重量中所能获得的最大价值
那么dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i])
*/
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int w[105];
int v[105];
int dp[105][105];
int main(){
int n,m;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d %d",&w[i],&v[i]);
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++){
for(int j=m;j>=0;j--){
if(j>=w[i]){
dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
}
else dp[i][j]=dp[i-1][j];
}
}
printf("%d\n",dp[n][m]);
return 0;
}
01背包
有n个物品,每个物品有重量w,价值v,现有一个m容量的背包,每个物品只能选一次
所能获得的最大价值为多少
dp[i][j],i表示当前的物品数,j为当前的重量,dp[i][j],在前i个物品,j的重量中所能获得的最大价值
那么dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i])
*/
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int w[105];
int v[105];
int dp[105][105];
int main(){
int n,m;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d %d",&w[i],&v[i]);
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++){
for(int j=m;j>=0;j--){
if(j>=w[i]){
dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
}
else dp[i][j]=dp[i-1][j];
}
}
printf("%d\n",dp[n][m]);
return 0;
}
阅读全文
0 0
- 笔记——01背包
- 背包问题九讲笔记———01背包
- 笔记——完全背包
- 笔记——多重背包
- DP背包之01背包、完全背包、多重背包笔记
- 背包问题——01背包、完全背包、多重背包、混合三种背包问题
- 背包问题(1)——01背包、完全背包、多重背包、混合三种背包问题
- 【算法笔记】贪心算法——01背包问题
- 【算法笔记】回溯法——01背包问题
- 【背包专题——01背包】
- 背包问题——01背包
- 背包九讲——01背包
- 动态规划——背包问题笔记
- 01背包 学习笔记
- 01背包笔记
- 背包九讲笔记-01背包问题
- 背包九讲笔记--01背包
- 背包九讲系列1——01背包、完全背包、多重背包
- 二叉树的先中后序遍历,递归遍历,非递归遍历
- matlab多维数组操作
- Mac安装Tensorflow,运行项目报错: module compiled against API version 0xa but this version of numpy is 0x9
- Android Code Generator
- Java 里面split用法小结
- 笔记——01背包
- 新旧animator编辑问题
- 正则表达式使用规则
- js系列教程10-canvas绘图全解
- Orclae数据库
- hibernate 结合MySQL使用
- 博弈入门---(巴什博弈,威佐夫博弈,nim博弈)
- XStream解析
- 字节缓冲