基准时间限制: 1 秒 空间限制: 131072 KB 分值: 0 难度:基础题在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数)。求背包能够容纳的最大价值。
Input第1行,2个整数,N和W中间用空格隔开。N为物品的数量,W为背包的容量。(1 <= N <= 100,1 <= W <= 10000) 第2 - N + 1行,每行2个整数,Wi和Pi,分别是物品的体积和物品的价值。(1 <= Wi, Pi <= 10000)Output输出可以容纳的最大价值。Input示例3 6 2 5 3 8 4 9Output示例14#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <stack> #include <queue> #include <vector> #include <deque> #include <map> #include <set> #include <algorithm> #include <iomanip> #include <cmath> #include <cstdlib> #include <sstream> #include <ctime> using namespace std; int vo[105]; int va[105]; int dp[10005]; void One(int n,int v) { int i,j; for(i=0;i<n;i++) for(j=v;j>=vo[i];j--) dp[j]=max(dp[j],dp[j-vo[i]]+va[i]); printf("%d\n",dp[v]); } int main() { int N,W; int i; scanf("%d%d",&N,&W); for(i=0;i<N;i++) { scanf("%d%d",&vo[i],&va[i]); } One(N,W); return 0; }
51nod1085背包问题
最新推荐文章于 2021-04-15 19:32:27 发布