资源简介
给定N种物品和一个背包。物品i的重量是wi,其价值为vi,背包的容量为c。应该如何选择装入背包的物品,使装入背包中物品的总价值最大?
在选择装入背包的物品时,对每种物品i只有2种选择,即装入背包或不装入背包,不能将物品i装入背包多次,也不能只装入部分的物品i
代码片段和文件信息
#include
#include
int n; //物品数量
double c; //背包容量
double p[100]; //排序后物品价值
double pp[100]; //物品价值
double w[100]; //排序后物品重量
double ww[100]; //物品重量
double cw=0.0; //当前重量
double cp=0.0; //当前价值
double bestp=0.0; //当前最优价值
double perp[100]; //单位物品价值(排序后)
int order[100]; //排序
int put[100]; //0为不装,1为装
void Knapsack()//按单位价值排序函数
{
int ij;
int temporder=0;
double temp=0.0;
for(i=1;i<=n;i++)
{
put[i]=0;
order[i]=i;
p[i]=pp[i];
w[i]=ww[i];
}
for(i=1;i<=n;i++)
perp[i]=pp[i]/ww[i];
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(perp[i] {
temp=perp[i];
perp[i]=perp[j];
perp[j]=temp;
temporder=order[i];
order[i]=order[j];
order[j]=temporder;
temp=p[i];
p[i]=p[j];
p[j]=temp;
- 上一篇:c++api中文版
- 下一篇:C++ Primer中文版第五版带目录及源码
相关资源
- C++ Primer中文版第五版带目录及源码
- c++api中文版
- c++实现的端口映射
- QR分解算法的纯c++代码
- 基于c++的udp传输,传送超过10M的文件
- MFC程序设计-画图板
- 操作系统实验--电梯调度 VC++实现
- C++实现排课程序
- VS2010 C++ ADO读取ACCESS 数据库
- 东北大学c++实验报告214492
- JMAIL邮件发送C++
- 网络流量统计源程序c++
- C++实现的单纯形算法计算程序
- AES加密算法(C++实现)
- 基于C++的火车票管理系统
- 员工管理系统c++
- 数字高程模型DEM内插程序c,c++混合版
- c/c++实现的基于文件的RSA加解密
- c/c++实现的基于文件的DES加解密
- FTDI2232H上位机程序
- C++ 五子棋 小游戏
- 求陪集分解
- vc++6.0实现的学生成绩管理系统代码
- C++ 画图 茶壶
- GIS拓扑关系生成程序
- 摆渡木马Visual C++ 源码
- C++实现的单片空间后方交会
- bios.h C++头文件
- 信道编码C++
- 用vc++6.0做 的RSA的加密与解密程序
评论
共有 条评论