01背包问题

01背包问题

#include<bits/stdc++.h>
using namespace std;
int w[1005],va[1005],dp[1005];//重量和价值dp遍历数组 
int main() {
	int n,v;
	cin>>n>>v;
	for(int i=1;i<=n;i++){
		cin>>w[i]>>va[i];
	}
	for(int i=1;i<=n;i++){
		for(int j=v;j>=w[i];j--){//每次的值只与上次有关
			dp[j]=max(dp[j],dp[j-w[i]]+va[i]); //一维滚动数组优化
		}
	}
	cout<<dp[v];
	return 0;
}
上一篇:江西的省赛


下一篇:va_list、va_start和va_end实现