标签:取出 text puts class 输出 -- dma 代码 def
第1行,2个整数,N和W中间用空格隔开。N为物品的数量,W为背包的容量。(1 <= N <= 100,1 <= W <= 10000) 第2 - N + 1行,每行2个整数,Wi和Pi,分别是物品的体积和物品的价值。(1 <= Wi, Pi <= 10000)
输出可以容纳的最大价值。
3 6
2 5
3 8
4 9
14
代码:
#include <iostream> #include <cstdio> #include <cmath> #define MAX 100 #define DMAX 10000 using namespace std; int N,W; int w[MAX],p[MAX]; int dp[DMAX + 1]; int main() { scanf("%d%d",&N,&W); for(int i = 0;i < N;i ++) { scanf("%d%d",&w[i],&p[i]); } for(int i = 0;i < N;i ++) { for(int j = W;j >= w[i];j --) { dp[j] = max(dp[j],dp[j - w[i]] + p[i]); } } printf("%d",dp[W]); }
标签:取出 text puts class 输出 -- dma 代码 def
原文地址:https://www.cnblogs.com/8023spz/p/10021813.html