裝船問題 貪心演算法

2021-10-11 12:08:08 字數 1372 閱讀 4379

description

王小二畢業後從事船運規劃工作,吉祥號貨輪的最大載重量為m噸,有10種貨物可以裝船。第i種貨物有wi噸,總價值是pi。王小二的任務是從10種貨物中挑選若干噸上船,在滿足貨物總重量小於等於m的前提下,運走的貨物的價重比最大。

input

輸入資料的第一行有乙個正整數m(0 < m < 10000),表示所有貨物最大載重量。在接下來的10行中,每行有若干個數(中間用空格分開),第i行表示的是第i種貨物的貨物的總價值pi ,總重量wi。(pi是wi的整數倍,0 < pi , wi < 1000)

output

輸出乙個整數,表示可以得到的最大價值。

sample

input

10010 10

20 10

30 10

40 10

50 10

60 10

70 10

80 10

90 10

100 10

output

550

#include.h>

using namespace std;

//定義乙個結構體,結構體裡面有p(**),w(質量),v(平均)

struct node

a[1111

],t;

//定義乙個結構體陣列,和臨時變數t(在氣泡排序的時候用到)

/*int cmp(node a,node b)

*///這個地方就是在用sort函式的cmp函式,其中必須得定義在main函式之外,

//結構體的下面應該是,比較結構體裡面的那個變數就用a.比較的變數。

//公升序的話就用<,反過來如果降序的話就用》;

int main()

//下面的這兩個迴圈是用的氣泡排序的方法把他們的價重比降序排列給排出來

//其實這個地方嫌麻煩的話是可以用sort函式進行排序的,結構體sort函式

//sort(a,a+n,cmp)

//a是陣列名,n是陣列的長度,cmp是為了比較結構體裡具體一項寫的函式.

//兩個方法二選一就可以了,也可以用其他的方法比較,這裡就不講了。

for(int i=

0;i<

9;i++)}

}for

(int i=

0;i<

10;i++

)else

//如果不滿足剛剛的if,也就是船再裝就超載了,

//就讓我的sum為價重比乘以m就可以了,一次計算出來。

} cout

}

裝船問題 貪心演算法

王小二畢業後從事船運規劃工作,吉祥號貨輪的最大載重量為m噸,有10種貨物可以裝船。第i種貨物有w iw i wi 噸,總價值是p ip i pi 王小二的任務是從10種貨物中挑選若干噸上船,在滿足貨物總重量小於等於m的前提下,運走的貨物的價重比最大。input 輸入資料的第一行有乙個正整數m 0 m...

貪心演算法之最優裝船問題

越來越發現自己的程式設計功底很差,於是近期打算惡補下。看到一題目,初見覺得很簡單,但是實際程式設計的時候,可能是由於自己的基本功太弱的原因吧,還是花費了很長的時間的。題目如下 有一批貨櫃要裝入乙個載質量為c的貨船種,每個貨櫃的質量由使用者自己輸入指定,在貨船的裝載體積不限的前提下,如何裝載貨櫃才能盡...

貪心演算法之最優裝船

在乙個固定重量的貨船中裝最大重量的貨櫃,忽略空間 如最大重量是15 而我有五個箱子重量分別為 2 4 66 8 60 那麼我裝入的箱子應該為第1 2 4個 我現在有兩個陣列,乙個w 5 儲存這五個箱子的重量另乙個x 5 儲存這五個箱子的下標 當我的w 5 安找遞增的順序排列後,我只需要順序相加小於我...