必威体育Betway必威体育官网
当前位置:首页 > IT技术

存钱罐

时间:2019-09-09 03:42:12来源:IT技术作者:seo实验室小编阅读:87次「手机版」
 

存钱罐

题目:

在这里插入图片描述

在这里插入图片描述

代码如下:

#include<bits/stdc++.h>
using namespace std;
#define NIL 0x3f3f3f3f
int p[505],w[505],dp[10005];//dp[i]:重量为i时最小价值 
int main()
{
	int n,e,f,v;
	cin >> e >> f;
	cin >> n;
	memset(dp,NIL,sizeof(dp));
	v = f - e;
	dp[0] = 0;
	for(int i = 0;i < n;i++) cin >> p[i] >> w[i];
	for(int i = 0;i < n;i++)
		for(int j = w[i];j <= v;j++)
			dp[j] = min(dp[j],dp[j - w[i]] + p[i]);
	if(dp[v] != NIL) cout << dp[v];
	else cout << "impossible." << endl;
	return 0;
}

这是一道完全背包问题,这里要正好凑够重量,所以先将dp[i]赋值为最大值,每次选取较小的那个,如果最后dp[v]不等于最大值那就证明可以凑出,否则输出不可能。

相关阅读

分享到:

栏目导航

推荐阅读

热门阅读