请问为什么这种状态定义无法通过
查看原帖
请问为什么这种状态定义无法通过
830836
Wxxpp楼主2023/4/4 10:20

可知总重量上界为1000,则状态定义f(i,j)表示只从前i种物品中选择,使得总重量不超过1000的情况下数量的最大值

#include <bits/stdc++.h>
using namespace std;

#define int long long

const int N = 1010;

int v[6] = {1, 2, 3, 5, 10, 20}, s[6];
int dp[N];

signed main(){
    for(int i = 0; i < 6; i++) cin >> s[i];

    for(int i = 0; i < 6; i++)
        for(int j = N; j; j--)
            for(int k = 1; k * v[i] <= j && k <= s[i]; k++)
                dp[j] = max(dp[j], dp[j - k * v[i]] + k);

    printf("Total=%d\n", dp[N]);

    return 0;
}
2023/4/4 10:20
加载中...