为什么在完全背包循环顺序中,时间在选择的第几个前面是对的?
查看原帖
为什么在完全背包循环顺序中,时间在选择的第几个前面是对的?
705229
mayijian楼主2024/5/19 20:43

rt

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e7+5;
long long dp[maxn] ,t1,m,at[10005],val[10005],ans;
int main(){
	cin>>t1>>m;
	for(int i=1;i<=m;i++){
		cin>>at[i]>>val[i];
	}
	for(int i=0;i<=t1;i++){  //当前已用时间 ,dp[i]表示价值 
		for(int j=1;j<=m;j++){    //当前药品种类 
			dp[i+at[j]]=max(dp[i+at[j]],dp[i]+val[j]);
		    
			
		}
	}
	for(int i=0;i<=t1;i++){
		ans=max(ans,dp[i]);
		
	}
	cout<<ans;
	
	
	
	return 0;
}
2024/5/19 20:43
加载中...