背包问题之前学了,不过现在又忘得差不多了(可惜之前没有写博客总结),现在结合例题重新复习一下。
例1:
背包1
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
有 n 个重量和价值分别为Wi,Vi的物品,现从这些物品中挑选出总量不超过 W 的物品,求所有方案中价值总和的最大值。
Input:
输入包含多组测试用例,每一例的开头为两位整数 n、W(1<=n<=10000,1<=W<=1000) ,接下来有 n 行,每一行有两位整数 Wi、Vi(1<=Wi<=10000,1<=Vi<=100)。
Output:
输出为一行,即所有方案中价值总和的最大值。
Sample Input:
3 4 1 2 2 5 3 7
Sample Output:
9
附上AC代码加解析:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <list>
#include <