天天看點

01背包模版(C++滾動數組優化)

#include<bits/stdc++.h>
using namespace std;


//dp[i]表示i容量的體積能得到的最大價值 
//c[i]表示第i個物體的體積
//v[i]表示第i個物體的價值 
int t,m,dp[1010],c[105],v[105];

int main(){
	cin>>t>>m;//t為物體個數  m為背包容量 
	for(int i=1;i<=m;i++) cin>>c[i]>>v[i]; //輸入各個物體體積和價值 
	
	
	for(int i=1;i<=m;i++){
		for(int j=t;j>=c[i];j--) 
			dp[j] = max(dp[j], dp[j-c[i]] + v[i]);
	}
	cout<<dp[t];
	return 0;
}
           

繼續閱讀