• 算法第四章实践报告


    1.实践题目

    4-1 程序存储问题

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

    2.问题描述

    利用贪心算法:先将程序在磁带上的长度进行排序,优先选择程序磁带长度较小的,最多能存储的程序数与长度下标相关联。当程序正好能全部存储,返回程序总数。

    #include<iostream>
    #include<algorithm> 
    using namespace std;
    int l[100];
    
    int most(int* a, int n, int L)
    {
        int sum = 0;
        for(int i = 0; i < n; i++)
        {
            sum += l[i];
            if(sum > L)
                return i;
            if(i == n-1)
                return n;
        }
    }
    
    int main()
    {
        int n, L;
        cin >> n >> L;
        for(int i = 0; i < n; i++)
            cin >> l[i];
        sort(l, l+n);
        cout << most(l, n, L);
        
        return 0;
     }
    View Code

    3.算法描述

    int most(int* a, int n, int L)
    {
        int sum = 0;
        for(int i = 0; i < n; i++)
        {
            sum += l[i];
            if(sum > L)
                return i;
            if(i == n-1)
                return n;//刚好能装下
        }
    }
    View Code

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

    空间复杂度辅助存储l[n]:O(n)

    时间复杂度循环遍历程序长度:O(n)

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

    贪心算法大多以某种形式进行排序,选择最优;局部最优解可能导致全局最优解

  • 相关阅读:
    C++基础学习6:内联函数
    lvm
    yum源
    mysql性能优化
    PXE
    dns配置
    进程命令
    ssh免密登陆和加密解密
    RAID阵列
    快速部署postfix邮件服务器
  • 原文地址:https://www.cnblogs.com/liuyuany/p/11864980.html
Copyright © 2020-2023  润新知