程序设计与分析——贪心算法实验

仅供参考

【题目大意】

  • 第 1 题 背包问题:已知一个载重为 M 的背包和 n 件物品,第 i 件物品的重量为 wi,如果将第 i 件物品全部装入背包,将有收益 pi,这里,wi>0,pi>0,0 i<n。所谓背包问题是指求一种最佳装载方案,使得收益最大。
    输入:第一行物品个数 n 和背包载重 M,以下 n 行输入物品编号 i,物品收益 pi,物品重量 wi。
    输出: x1,x2,…,xn,… xi ,i<n,每个 xi 是第 i 件物品装入背包中的部分(小数位保留二位)。

【题意与思路分析】

  • 题目分析:
    根据题目,我们可以知道,每一个物品不必所有的都装进这个背包里面,同时小数点需要保持两位。
  • 思路分析:
    我们采用贪心的方案,计算出每个物品的平均价值,然后根据贪心的思想,肯定是平均价值高的就是优先拿走,直到拿完了。最后我们就可以得出每个物品的取用的情况了。

【程序代码】

#include<bits/stdc++.h>

using namespace std;


struct node{
   
	int index; // 表示这个物品的初始的下标 
	double value;  // 表示这个物品的价值 
	double weight;  // 表示这个物品的重量 
	double pre;  // 表示这个物品的平均重量价值 
	bool operator <(const node &a) const {
   
		return pre>a.pre;
	}
}Node[100010];
double ans[100010];
int main(){
   
	int n,total;
	cin>>n>>total;
	for(int i=1;i<=n
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值