資源簡介
http://blog.csdn.net/effective_coder/article/details/8736718#cpp
博客開始的背包問題不能達到完美效果,改進,使用博主說的第一種策略和第三種策略結合
代碼片段和文件信息
//http://blog.csdn.net/effective_coder/article/details/8736718
//貪心算法
/*
背包問題:有一個背包,背包容量是M=150。有7個物品,物品可以分割成任意大小。要求盡可能讓裝入背包中的物品總價值最大,但不能超過總容量。
物品?A?B?C?D?E?F?G
重量?35?30?60?50?40?10?25
價值?10?40?30?50?35?40?30
*/
//對于此題有三種貪心策略,第一種是選擇價值最大的,第二種是選擇價值最小的,第三種是選擇單位重量的價值最大的。
//貪心算法重要的是找貪心策略
#include
#define?Num?7
using?namespace?std;
//構造數據結構
struct?Node{
char?char_mark; //物品
double?weight; //重量
double?value; //價值
bool?mark; //是否已經放到容器中
double?pre_weight_value; //單位重量價值
};
int?main(){
double?Weight[Num]={35306050401025};
double?Value[Num]={10403050354030};
????cout<<“七種物品的重量和價值:“< ????for(int?index=0;index ????????cout<<“weight:“< ????}
Node?array[Num]; //Node數組用來裝載值
//初始化
cout<<“七種物品的單位重量價值:“< for(int?i=0;i array[i].char_mark=65+i;
array[i].weight=Weight[i];
array[i].value=Value[i];
array[i].mark=false;
array[i].pre_weight_value=Value[i]/Weight[i];
cout<<“第“< }
double?weight_all=0.0;
double?value_all=0.0;
double?max=0.0;
char?charArray[7]; //記錄已經選中的結點
int?flagn=0; //flag記錄當前比重最大的元素序號,以序號0為初始值
w
- 上一篇:C語言戰爭游戲源代碼
- 下一篇:BMS 主控板代碼
評論
共有 條評論