为什么要max(dp[j-w[i]]+val[i], dp[j-1])要减一
查看原帖
为什么要max(dp[j-w[i]]+val[i], dp[j-1])要减一
870374
Eden2026楼主2023/6/19 21:25
#include "stdio.h"
#include "iostream"
using namespace std;
int w[105], val[105];
int dp[1005];
int main()
{
    int t,m,res=-1;    
    scanf("%d%d",&t,&m);
    for(int i=1;i<=m;i++)
        scanf("%d%d",&w[i],&val[i]);
    for(int i=1;i<=m;i++) 
    {
        for(int j=t;j>=0;j--) 
        {
            if(j>=w[i])
            {
                dp[j]=max(dp[j-w[i]]+val[i], dp[j]);
            }
        }
    }    
    printf("%d",dp[t]);
    return 0;
}
2023/6/19 21:25
加载中...