有n個物體,第i個物體重量為w[i] 價值為v[i]。在總重量不超過c的情況下讓總價值盡量高.取乙個物品必須全取,價值和重量按比例計算
【分析】
貪心策略:優先拿「價值除以重量的值」最大的,重量和小於等於c
#include
#include
#include
using
namespace
std;
struct box ;
//排序比較函式,以物品的價值/重量比值降序排序
bool cmp(box a, box b)
return
false;}/*
貪心演算法裝載
vector採用引用傳遞,也可以使用指標傳遞
引用傳遞相對比較安全
和陣列不同
如果值傳遞是無法影響到實參r的,而且實參給
形參賦值時會呼叫拷貝建構函式浪費資源
陣列傳遞的是首位址
*/void loading(box *box, vector
&r,int c,int n)
}}int main() ,,,,,};
double c = 30; //承載重量
sort(box,box+6,cmp);
vector
request;
loading(box,request,c,6);
for (int i = 0; i < request.size(); i++)
return
0;}
貪心 部分揹包問題
阿里巴巴走進了裝滿寶藏的藏寶洞。藏寶洞裡面有 n n 100 堆金幣,第 i 堆金幣的總重量和總價值分別是 mi,vi 1 mi,vi 100 阿里巴巴有乙個承重量為 t t 1000 的揹包,但並沒辦法將全部的金幣都裝進去。他想裝走盡可能多價值的金幣。所有金幣都可以隨意分割,分割完的金幣重量價值比...
貪心法求解部分揹包問題
揹包問題 給定乙個載重為m的揹包,及n個質量為wi 價值為pi的物體,1 i n,要求把物體裝滿揹包,且使得揹包內的物體價值最大。假設 xi是物體i被裝入揹包的部分,0 xi 1。當xi 0時,表示物體i沒有被裝入揹包 當xi 1時,表示物體i被全部裝入揹包 當xi處於0 1之間,表示物體i的一部分...
部分揹包問題 貪心演算法
有n個商品,每個商品的重量為wi,為 pi,現有乙個揹包,最多能裝 的重量 其中 0 i 問 怎樣裝能使包中裝入的商品價值最高 對於每個商品可以只裝該商品的一部分 include stdio.h include iostream include stdlib.h define maxsize 100...