一开始以为是贪心 后来通过样例数据看不是的(良心的样例) 所以就用了DP
其实我还是不明白为什么不是贪心 有大神能解答一下吗~~~
这个动态转移方程很接近于01背包 包括我看到的很多题解 也都说这就是01背包 但我以为 这两者仅仅是类似而非一样
我以为 做动规题目 不能简单简单地想着套几个模型 而是要不断地从每一个状态来分析 (当然啦 我的愚见)
#include <cstdio>
#include <iostream>
using namespace std;
int h, n;
int f[
45000], w[
500 +
1];
int main(){
scanf(
"%d%d", &h, &n);
for (
int i =
1; i <= n; i++)
scanf(
"%d", &w[i]);
for (
int i =
1; i <= n; i++)
for (
int j = h; j >= w[i]; j--)
f[j] = max(f[j], f[j - w[i]] + w[i]);
printf(
"%d", f[h]);
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-676971.html