信息科学与工程学院实验报告
系别
班级
实验时数 4
成绩
课程名称:算法分析与设计
实验名称
姓名
01 背包(贪心算法)
学号
实验地点 机房
日期
指导教师
同组成员
独立完成
一、实验目的及要求
1、 明白贪心算法的基本概念
2、 用贪心算法解决 011 背包问题
3、 通过本例掌握贪心算法的程序设计方法
二、实验环境及相关情况(包括使用的软件、实验设备)
1、 工具软件:C++
2、 硬件:AMD 32 位操作系统
3、 操作系统:windowsXP
三、实验内容及步骤(包括简要的实验步骤流程)
1, 构思用贪心算法怎么解决 01 背包问题
2,写出公式
3,按照公式写出代码
4,调试程序
5,测试代码
四、实验结果(拷贝屏幕,加上必要的文字说明)
五、实验总结
做实验之前要清楚自己的思路,要清楚题目要求并且要写出公式.写出公式后写出实验代码并
且测试.
};
void sort(Goods goods[], int n)
{
int j,i;
for(j=2;j<=n;j++)
{
goods[0] = goods[j];
i=j-1;
while(goods[0].pw>goods[i].pw)
{
goods[i+1] = goods[i];
i--;
}
goods[i+1]= goods[0];
}
}// 降序排列
void pack(Goods goods[],int n,float m)
{
float cu;
int i;
for(i=1;i<=n;i++)
{
goods[i].n=0;
}
cu = m;
for(i=1;i
cu)
break;
goods[i].n=1;
cu = cu-goods[i].w;
}
if(i<=n)
{
if(goods[i].wvoid main()
{
int n;
int i;
float m,temp;
printf("|--------贪心法的解背包问题---------|\n");
Goods goods[20];
printf("请输入物品总数:");
scanf("%d",&n);
printf("请输入最大重量:");
scanf("%f",&m);
for(i=1;i<=n;i++)
{
printf("请输入第%d 件商品的价值:",i);
scanf("%f",&goods[i].p);
printf("请输入第%d 件商品的重量:",i);
scanf("%f",&goods[i].w);
goods[i].pw=goods[i].p/goods[i].w;
goods[i].flag =i;
}
sort(goods,n);
pack(goods,n,m);
printf("最优解:\n");
for(i=1;i<=n;i++)
{
printf("第%d 件商品放%f \n",goods[i].flag,goods[i].n);
}
}