- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C应用贪心算法求解背包问题
实验五 应用贪心算法求解背包问题
学院: 计算机科学与技术 专业:计算机科学与技术
学号: 班级: 姓名:
一、实验内容:
背包问题指的是:有一个承重为W的背包和n个物品,它们各自的重量和价值分别是和(),假设,求这些物品中最有价值的一个子集。如果每次选择
某一个物品的时候,只能全部拿走,则这一问题称为离散(0-1)背包问题;如果每次
可以拿走某一物品的任意一部分,则这一问题称为连续背包问题。
二、算法思想:
首先计算每种物品单位重量的价值Vi/Wi,然后,依贪心选择策略,将尽可能多的单位重量价值最高的物品装入背包。若将这种物品全部装入背包后,背包内的物品总重量未超过C,则选择单位重量价值次高的物品并尽可能多地装入背包。依此策略一直地进行下去,直到背包装满为止。
三、实验过程:
#include iostream
using namespace std;
struct goodinfo
{
float p; //物品效益
float w; //物品重量
float X; //物品该放的数量
int flag; //物品编号
};//物品信息结构体
void Insertionsort(goodinfo goods[],int n)//插入排序,按pi/wi价值收益进行排序,一般教材上按冒泡排序
{
int j,i;
for(j=2;j=n;j++)
{
goods[0]=goods[j];
i=j-1;
while (goods[0].pgoods[i].p)
{
goods[i+1]=goods[i];
i--;
}
goods[i+1]=goods[0];
}
}//按物品效益,重量比值做升序排列
void bag(goodinfo goods[],float M,int n)
{
float cu;
int i,j;
for(i=1;i=n;i++)
goods[i].X=0;
cu=M; //背包剩余容量
for(i=1;in;i++)
{
if(goods[i].wcu)//若不超过容量,尽量增加物品
{
goods[i].X=1;
cu-=goods[i].w;//确定背包新的剩余容量
}
else
{
goods[i].X=0;
}
for(j=2;j=n;j++) /*按物品编号做降序排列*/
{
goods[0]=goods[j];
i=j-1;
while (goods[0].flaggoods[i].flag)
{
goods[i+1]=goods[i];
i--;
}
goods[i+1]=goods[0];
}
}
cout最优解为:endl;
for(i=1;i=n;i++)
{
cout第i件物品要放:;
coutgoods[i].Xendl;
}
}
void main()
{
cout|--------运用贪心法解背包问题---------|endl;
int j,n;
float M;
goodinfo *goods;//定义一个指针
while(j)
{
cout请输入物品的总数量:;
cinn;
goods=new struct goodinfo [n+1];//
cout请输入背包的最大容量:;
cinM;
coutendl;
int i;
for(i=1;i=n;i++)
{
goods[i].flag=i;
cout请输入第i件物品的重量:;
cingoods[i].w;
cout请输入第i件物品的效益:;
cingoods[i].p;
goods[i].p=goods[i].p/goods[i].w;//得出物品的效益,重量比
您可能关注的文档
- be与there_be练习题.doc
- BGA器件设计方法.ppt
- big bang 韩国组合.ppt
- BIM工具调查.docx
- BIRDS OF SOUTH-EAST ASIA 东南亚鸟类手册中文名+.doc
- BIPAP机械通气精解.ppt
- BI财务分析主题.doc
- BK型罗茨风机使用说明-新.doc
- Block_街区发展报告案例.ppt
- Bloom’s Taxonomy of Educational Objectives.ppt
- 2024云南省电力投资有限公司招聘试题及答案解析.docx
- 内容课件访问raz lcwhatcandraw.pdf
- 小学四年级下学期 英语复习一对话的含义.docx
- 2024届江苏省无锡市惠山区七校数学九上期末经典模拟试题含解析.doc
- 2024届江苏省无锡市积余中学九年级物理第一学期期末学业水平测试模拟试题含解析.doc
- 小学四年级英语绘本my mumm制作.docx
- 小学四年级英语开心版下册第8单无story.docx
- 2024届江苏省无锡市积余中学物理九年级第一学期期末统考试题含解析.doc
- 2024届江苏省无锡市惠山区物理九年级第一学期期末预测试题含解析.doc
- 《公路工程实景三维应用规范》 编制说明.pdf
文档评论(0)