初識算法:簡單的最優裝載問題-貪心算法

初識算法:貪心算法-最優裝載問題

最優裝載問題:有一輪船載重量爲c,集裝箱 i 的重量爲Wi,在裝在體積不受限制的情況下,將儘可能多的集裝箱裝上輪船。

貪心策略:集裝箱重量最輕的先裝
時間複雜度:T(n) = O(nlogn)
主要兩個階段:排序 -> 裝載

實例

問題描述:小明的表哥爲他推薦了一些學習計算機編程的的小視頻,這些視頻的播放時間長短不完全相同。現在給定一段時間,你能告訴小明他最多可以看多少個視頻嗎?(每個視頻的播放時間和給定的總時間均用分鐘爲單位)

輸入

單組輸入數據
第一行爲m n
m爲給定時間長度(分鐘)(0<n,m<=1000)
n表示視頻個數
接下來是n個整數代表每個視頻的播放時間(每個視頻播放時間爲不超過1000的正整數)

樣例輸入

84 6
65 46 18 76 79 3

輸出

輸出一個整數代表XP最多可以看的視頻數。

樣例輸出

3

#include<iostream>
#include<algorithm>
#define MAXN 1000005
using namespace std;
int w[MAXN];
int main()
{
	int c,n;
	int sum = 0; 
	int tmp = 0;
	cin >> c >> n;	 
	for(int i= 1; i <= n; ++i)
		cin >> w[i];
	sort(w+1,w+1+n);
	for(int i = 1; i <= n; ++i)
	{
		tmp += w[i];
		if(tmp <= c)
	 		++sum;
		else
			break;
	}
	cout << sum << endl;
	return 0;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章