題意:
有n個物品,每個物品的重量為weight[i],每個物品的價值為value[i]。現在有乙個揹包,它所能容納的重量為total,問:當你面對這麼多有價值的物品時,你的揹包所能帶走的最大價值是多少?
(注意和0/1揹包問題的區別,在揹包問題中,可以選擇將某種物品的一部分裝入揹包中,但不可以重複裝入)
分析:
選擇單位重量價值最大
的物品
#include
#include
#include
using namespace std;
const int maxn=30;
int n,c;
double x[maxn]; //儲存某一物品裝入的比例(全部還是部分)
struct node
data[maxn]; //x代表物品的重量,y代表物品的價值
int cmp(struct node a,struct node b)
int maxval()
; int i;
double maxvalue=0;
for(i=0;data[i].x<=c;i++)
x[i]=c/data[i].x; //物品i裝入部分
maxvalue+=x[i]*data[i].y;
return maxvalue;
}int main()
{ while(cin>>n>>c)
{for(int i=0;i
>data[i].x; //物品的重量
for(int i=0;i
>data[i].y; // 物品的價值 sort(data,data+n,cmp); //按物品單位重量的價值從大到小排序 cout<
<
貪心法之揹包問題
a,貪心演算法 該演算法應用於優化問題,即問題涉及通過一組配置來找出定義在這些配置上的目標函式的最小值或者最大值。為了求解給定的優化問題需要進行一系列的選擇,這個序列開始於某些易於理解的起始配置,然後從當前可能的配置中,反覆做出看起來是最好的決策。這個特點說明,從乙個良好的定義的配置開始,通過一系列...
貪心揹包問題
有乙個揹包,揹包容量是m 150。有7個物品,物品可以分割成任意大小。要求盡可能讓裝入揹包中的物品總價值最大,但不能超過總容量。物品 a b c d e f g 重量 35 30 60 50 40 10 25 價值 10 40 30 50 35 40 30 分析 目標函式 pi最大 約束條件是裝入的...
貪心 揹包問題
問題描述 有一天,阿里巴巴趕著一頭毛驢上山砍柴。砍好柴準備下山時,遠處突然出現一股煙塵,瀰漫著直向上空飛揚,朝他這兒卷過來,而且越來越近。靠近以後,他才看清原來是一支馬隊,他們共有四十人,乙個個年輕力壯 行動敏捷。乙個首領模樣的人揹負沉重的鞍袋,從叢林中一直來到那個大石頭跟前,喃喃地說道 芝麻,開門...