01背包问题 很裸的动态规划

来源:互联网 发布:淘宝自动刷手机版本 编辑:程序博客网 时间:2024/06/14 21:10

状态转移方程:

dp[v] = max{dp[v], dp[v-size[i]]+value[i]}// size[i] --> 第 i 件物品的大小  value[i]--> 第 i 件物品的价值// 背包大小为 V// 物品数量为 N

 

#include<iostream>#include<string>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<ctype.h>#include<algorithm>#include<map>#include<vector>#define MAX 100005#define MOD 1000003#define inf 100000000#define eps 1e-9#define pi acos(-1.0)#define LL long long #define I64 __int64#define max(a, b) ((a) > (b) ? (a) : (b))#define min(a, b) ((a) < (b) ? (a) : (b))// now 背包问题int dp[1000];int main(){int V, N;int size[20], value[20];freopen("in.txt", "r", stdin);while(scanf("%d", &V) != EOF){scanf("%d", &N);for(int i = 1;i <= N;i ++)scanf("%d %d", &size[i], &value[i]);// processingfor(int i = 1;i <= N;i ++){for(int v = V;v > size[i];v --){dp[v] = max(dp[v], dp[v-size[i]]+value[i]);}}printf("%d\n", dp[V]);}}/*100 577 9222 2229 8750 4699 90200 879 8358 1486 5411 7928 7262 5215 4868 62*/


 

原创粉丝点击