一个问题,j为什么要到0
查看原帖
一个问题,j为什么要到0
427110
Logiking楼主2021/5/8 12:40
#include<iostream>
using namespace std;
int n,x;
long long sum;//记录所有输的经验
long long e[1050];
long long u[1050];
long long dp[1050];
int main(){
	cin >> n >> x;
	long long l,w;
	int i,j;
	for(i = 1; i <= n; ++i){
		cin >> l >> w >> u[i];
		sum += l;
		e[i] = w - l;//差值背包
	}
	for(i = 1; i <= n; ++i){
		for(j = x; j >= 0; --j){//这里为什么j要到0
			if(j >= u[i])dp[j] = max(dp[j],dp[j-u[i]]+e[i]);//正常的一维01背包代码
		}
	}
	cout <<dp[x] * 5+ sum * 5;
	return 0;
}
2021/5/8 12:40
加载中...