資源簡(jiǎn)介
http://blog.csdn.net/effective_coder/article/details/8736718#cpp
博客開始的背包問(wèn)題不能達(dá)到完美效果,改進(jìn),使用博主說(shuō)的第一種策略和第三種策略結(jié)合
代碼片段和文件信息
//http://blog.csdn.net/effective_coder/article/details/8736718
//貪心算法
/*
背包問(wèn)題:有一個(gè)背包,背包容量是M=150。有7個(gè)物品,物品可以分割成任意大小。要求盡可能讓裝入背包中的物品總價(jià)值最大,但不能超過(guò)總?cè)萘俊?br/>物品?A?B?C?D?E?F?G
重量?35?30?60?50?40?10?25
價(jià)值?10?40?30?50?35?40?30
*/
//對(duì)于此題有三種貪心策略,第一種是選擇價(jià)值最大的,第二種是選擇價(jià)值最小的,第三種是選擇單位重量的價(jià)值最大的。
//貪心算法重要的是找貪心策略
#include
#define?Num?7
using?namespace?std;
//構(gòu)造數(shù)據(jù)結(jié)構(gòu)
struct?Node{
char?char_mark; //物品
double?weight; //重量
double?value; //價(jià)值
bool?mark; //是否已經(jīng)放到容器中
double?pre_weight_value; //單位重量?jī)r(jià)值
};
int?main(){
double?Weight[Num]={35306050401025};
double?Value[Num]={10403050354030};
????cout<<“七種物品的重量和價(jià)值:“< ????for(int?index=0;index ????????cout<<“weight:“< ????}
Node?array[Num]; //Node數(shù)組用來(lái)裝載值
//初始化
cout<<“七種物品的單位重量?jī)r(jià)值:“< 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]; //記錄已經(jīng)選中的結(jié)點(diǎn)
int?flagn=0; //flag記錄當(dāng)前比重最大的元素序號(hào),以序號(hào)0為初始值
w
評(píng)論
共有 條評(píng)論