资源简介
给定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中文版第五版带目录及源码
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 用回溯法解决八皇后问题C语言实现
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
评论
共有 条评论