貪心類演算法總結

2021-10-04 20:25:28 字數 933 閱讀 8537

輸入描述:

有多組測試資料。

第一行輸入兩個非負整數x 和n。

接下來n 行,每行輸入兩個整數,分別為mi 和wi。

所有資料都不大於1000。

x 和n 都為-1 時程式結束。

輸出描述:

請輸出小明最多能喝到多少毫公升的飲料,結果保留三位小數。

輸入樣例#:

233 6

6 123 66

32 23

66 66

1 58 5

-1 -1

輸出樣例#:

136.000

**:

#include #define n 1000

using namespace std;

struct drink

d[n];

bool cmp(drink a, drink b)

int main()

sort(d, d+n, cmp);

double ans = 0;

for(int i=0; i=d[i].w)

else

}printf("%.3lf\n", ans);

}return 0;

}

求解思路:

通過分析之後我們可以發現,小明想要喝盡量多的飲料的話,肯定優先選擇價效比

最高的飲料喝,也就是說1 毫公升的**最低的飲料先喝,那麼我們就需要去比較,每種飲料1

毫公升的**是多少。然後按照這個單價從低到高依次排序,然後乙個乙個往後喝,這樣可以保

證小明能喝到最多的飲料。

貪心類演算法思路:

解題的通用步驟

1、建立數學模型來描述問題;

2、把求解的問題分成若干個子問題;

3、對每一子問題求解,得到子問題的區域性最優解;

4、把子問題的區域性最優解合成原來問題的乙個解。

總結 貪心演算法 貪心演算法入門總結

英語 greedy algorithm,又稱貪婪演算法,是一種在每一步選擇中都採取在當前狀態下最好或最優 即最有利 的選擇,從而希望導致結果是最好或最優的演算法。比如在旅行推銷員問題中,如果旅行員每次都選擇最近的城市,那這就是一種貪心演算法。貪心演算法在有最優子結構的問題中尤為有效。最優子結構的意思...

貪心演算法總結

第一套題主要用貪心演算法來解決問題,貪心演算法簡單來說就是從區域性最優解,進而求得整體最優解,其中難點就是選擇貪心標準,貪心標準的選擇選的巧妙問題就會變的很簡單,比如第一題搬桌子的題,就是把房間轉化為對應的走廊號,問題就簡化了很多。貪心演算法的題目有的可以很簡單的看出來,常見典型的題有,揹包問題,最...

貪心演算法總結

在求最優解問題的過程中,依據某種貪心標準,從問題的初始狀態出發,直接去求每一步的最優解,通過若干次的貪心選擇,最終得出整個問題的最優解,這種求解方法就是貪心演算法。從貪心演算法的定義可以看出,貪心演算法不是從整體上考慮問題,它所做出的選擇只是在某種意義上的區域性最優解,而由問題自身的特性決定了該題運...