算法第四章实践报告

  1. 实践题目:程序存储问题

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

  2. 算法描述:题目要求计算给定长度的磁带最多可存储的程序个数,先对程序的长度从小到大排序,再采用贪心算法求解。

#include <iostream>
#include <algorithm>
using namespace std;
void Loogest(int n,int length, int l[])
{
    sort(l, l+n);
    int number=0;
    int L=length;
    for(int i=0;i<n;i++) {
        if(l[i] > L) break;
        number++;
        L-=l[i];
    }
    cout<<number;
}

int main()
{
    int n,allLength;
    int length[100];
    cin>>n>>allLength;
    for(int i=0;i<n;i++) {
        cin>>length[i];
    }
    Loogest(n,allLength,length);
    return 0;
}

 

  1. 算法时间及空间复杂度分析(要有分析过程)

时间复杂度:O(n),空间复杂度:O(n)

  1. 心得体会(对本次实践收获及疑惑进行总结)

理解贪心算法之后再去做这道题,就很容易了。

posted on 2018-12-02 19:35  fine_five  阅读(385)  评论(0)    收藏  举报