程序存储问题(贪心算法)

程序存储问题

问题描述:设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是i l , 1 ≤i ≤n。程序存储问题要求确定这n 个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序。对于给定的n个程序存放在磁带上的长度,编程计算磁带上最多可以存储的程序数。


分析:根据长度进行非降序排序,接着遍历,判断每一段是否小于L,小于则cnt++,L-=num[i];

#include <iostream>
#include <algorithm>
using namespace std;
int main() {
	int n, l, i, num[1000], cnt;
	cnt = 0;
	cin>>n>>l;
	for(i = 0; i < n; i++) {
		cin>>num[i];
	}
	sort(num, num+n);
	for(i = 0; i < n; i++) {
		if(num[i] <= l) {
			l -= num[i];
			cnt++;
		}
	}	
	cout<<cnt<<endl;
	return 0;
}

#include <iostream>
#include <iomanip>
#include <algorithm> 
using namespace std;
int main() {
	int n, i, j, sum, t[100];
	sum = 0;
	cin>>n;
	for(i = 0; i < n; i++) {
		cin>>t[i];
	}
	sort(t, t+n);
	for(i = 0; i < n; i++) {
		for(j = 0; j <= i; j++) {
			sum += t[j];
		}
	}
	cout<<fixed<<setprecision(2)<<1.0*sum/n<<endl;
	return 0;
}

    原文作者:贪心算法
    原文地址: https://blog.csdn.net/adusts/article/details/80562828
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞