求助
查看原帖
求助
504142
micmic楼主2022/3/24 16:23
#include<iostream>
using namespace std;

int T;
int M;
int Val[101];
int Cost[101];
int dp[105][105];	//dp[i][j]代表用j的时间采前i种药草的最大价值 

int main(){
	cin>>T;
	cin>>M;
	for(int i=1;i<=M;i++)		//从第一株开始 
		cin>>Cost[i]>>Val[i];
	
	//初始化 
	for(int i=0;i<=T;i++){
		if(Cost[1]>i)dp[1][i]=0;
		else dp[1][i]=Val[1];
	} 
	
	//dp
	for(int i=2;i<=M;i++){
		for(int j=0;j<=T;j++){
			dp[i][j]=dp[i-1][j];
			if(Cost[i]<=j)
				dp[i][j]=max(dp[i-1][j],Val[i]+dp[i-1][j-Cost[i] ] );
		}
	} 
	cout<<dp[M][T];
	
}

2022/3/24 16:23
加载中...