logo资料库

贪心算法编写的01背包问题c/c++.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
信息科学与工程学院实验报告 系别 班级 实验时数 4 成绩 课程名称:算法分析与设计 实验名称 姓名 01 背包(贪心算法) 学号 实验地点 机房 日期 指导教师 同组成员 独立完成 一、实验目的及要求 1、 明白贪心算法的基本概念 2、 用贪心算法解决 011 背包问题 3、 通过本例掌握贪心算法的程序设计方法 二、实验环境及相关情况(包括使用的软件、实验设备) 1、 工具软件:C++ 2、 硬件:AMD 32 位操作系统 3、 操作系统:windowsXP 三、实验内容及步骤(包括简要的实验步骤流程) 1, 构思用贪心算法怎么解决 01 背包问题 2,写出公式 3,按照公式写出代码 4,调试程序 5,测试代码 四、实验结果(拷贝屏幕,加上必要的文字说明) 五、实验总结 做实验之前要清楚自己的思路,要清楚题目要求并且要写出公式.写出公式后写出实验代码并 且测试.
代码: #include struct Goods { float p; //price float w; //weight float n; //number float pw;// int flag; price/weight
}; 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;icu) break; goods[i].n=1; cu = cu-goods[i].w; } if(i<=n) { if(goods[i].w
void 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); } }
分享到:
收藏