部分揹包問題(貪心基礎)

2021-08-09 10:12:35 字數 797 閱讀 6828

有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...