P2240 深基12 例1 部分揹包問題(洛谷)

2021-10-07 06:20:10 字數 784 閱讀 3687

思路:先定義三個陣列儲存每一堆金幣的價值,重量,價效比,然後用氣泡排序按價效比從大到小排序,最後將價效比大的先與揹包的重量比較(此處就是貪心的思想,區域性優解到全域性優解),再分兩種情況討論,最後輸出帶走金幣的價值即可

#include

using

namespace std;

int n;

double t,v[

101]

,w[101

],a[

101]

,num;

//v:價值 w:重量 a:價效比 num:帶走的金幣價值

intmain()

//氣泡排序按價效比從大到小

for(

int i =

1;i <= n-

1;i++

)for

(int j =

1;j < n+

1-i;j++)if

(a[j]

< a[j+1]

)for

(int i =

1;i <= n;i++

)else

} cout<<

setiosflags

(ios::fixed)

<<

setprecision(2

)<

//使結果保留兩位小數

return0;

}

洛谷 P2240 深基12 例1 部分揹包問題

題目描述 阿里巴巴走進了裝滿寶藏的藏寶洞。藏寶洞裡面有 n n le 100 n n 100 堆金幣,第 ii 堆金幣的總重量和總價值分別是 m i,v i 1 le m i,v i le 100 mi vi 1 mi vi 100 阿里巴巴有乙個承重量為 t t le 1000 t t 1000 ...

洛谷P2240 部分揹包問題 貪心

洛谷p2240 樣例 輸入 450 1060 20100 30120 1545 輸出 240.00 思路 與動態規劃的揹包問題不同,此處的金幣是可以隨意分割的,我們可以運用貪心,優先選取最合適的金幣堆。怎麼優先選擇呢?題中說道 分割完的金幣重量價值比 也就是單位 不變 所以可以優先選擇單位 大的金幣...

揹包問題(1)部分揹包

1.現有4個揹包,已知每個物品的體積和價值,每個揹包最多容納10個體積的物品,每件物品只能拿一次,問怎麼樣裝使揹包的價值最大?分析 1 二維陣列求法 如果包的體積由0變化到10,每次物品只能放一次,則包內所放物品的價值量為 則包所放的最大價值即二維陣列的最後乙個值 如下 include using ...