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