题目
样例
这是一道裸题,也就是说这道题就是一个01背包的模板题,是用来练手的!
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <string>
typedef long long ll;
using namespace std;
int w[1003]; //体积
int v[1003]; //价值
int s[1003][1003];
int main()
{
int t, n, m;
cin >> t;
while (t--)
{
memset(s, 0, sizeof(s));
cin >> n >> m;
for (int i = 1; i <= n; i++){
cin >> v[i]; //每个骨骼的价值
}
for (int i = 1; i <= n; i++){
cin >> w[i]; //每个骨骼的体积
}
for (int i = 1; i <= n; i++){
for (int j = 0; j <= m; j++){
if (j >= w[i]){
s[i][j] = max(s[i - 1][j], s[i - 1][j - w[i]] + v[i]); // 此时的值是[i-1][j-w[i]]+v[i] 和 [i-1][j]比较
}
else
s[i][j] = s[i - 1][j];
}
}
cout << s[n][m] << endl;
}
return 0;
}