//blog.csdn.net/Adusts/article/details/80562828
程序存储问题
问题描述:设有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;
}