天天看点

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;
}
           

继续阅读