01背包10分 求助
查看原帖
01背包10分 求助
1132411
Red_Cow楼主2024/10/10 16:49

把“for(int j=1;j<=T;j++)”改成“for(int j=t;j>=0;j--)”即可AC,但不知道为什么

#include <iostream>
#include <algorithm>
using namespace std;

int T,M;
int w[105];
int v[105];
int dp[1005][105];
int main()
{
    cin >> T >> M;
    for(int i=1;i<=M;i++)
        cin>>w[i]>>v[i];
    for(int i=1;i<=M;i++)
    {
        for(int j=1;j<=T;j++)
        {
            if(j<w[i]) dp[i][j] = dp[i-1][j];
            else dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]]+v[i]);
        }
    }
    cout << dp[M][T];
    return 0;
}

2024/10/10 16:49
加载中...