NC16693解题步骤基本一致

链接

#include "iostream"
using namespace std;
int V[101];
int W[101];
int dp[101][1001];
int main()
{
    int T,n,i,x;
    cin>>T>>n;
    for(i=1;i<=n;i++){
        cin>>V[i]>>W[i];
    }
    dp[0][0]=0;
    for(int i=1;i<=n;i++){
        for(int j=0;j<=T;j++){
            if(V[i] > j){
                dp[i][j]=dp[i-1][j];
            }else{
                dp[i][j]=max(dp[i-1][j],dp[i-1][j-V[i]]+W[i]);
            }
        }
    }
    cout<<dp[n][T];
}