有个问题
查看原帖
有个问题
657442
wusihao1931楼主2022/12/15 11:06
#include <bits/stdc++.h>

using namespace std;

const int N = 110, M = 2 * N;

int n;
int dp[M];
int sum1;
int v[N], w[N];

int main()
{
    cin >> n;
    memset(dp, 0x3f, sizeof dp);
    dp[0] = 0;
    for (int i = 1; i<= n; i ++ )
    {
        cin >> v[i] >> w[i];
        sum1 += v[i];
    }
    
    for (int i = 1; i <= n; i ++ )
        for (int j = sum1; j >= v[i]; j -- )
            dp[j] = min(dp[j], dp[j - v[i]] + w[i]);
    
    for (int i = sum1; i >= 0; i -- )
        if (sum1 - i >= dp[i])
        {
            cout << sum1 - i << endl;
            break;
        }
        
    return 0;
}

最后的 i 不应该是下层书的厚度吗?为什么sum1 - i是下层书的厚度?

2022/12/15 11:06
加载中...