简单的最优装载问题-贪心算法

贪心算法-最优装载问题

最优装载问题:有一轮船载重量为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;
} 
发布了2 篇原创文章 · 获赞 0 · 访问量 47

猜你喜欢

转载自blog.csdn.net/liangsena/article/details/104314083