• 算法第四章实践报告


    一 . 实践题目

    7-3 程序存储问题

    二 . 问题描述

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

    输入格式:

    第一行是2 个正整数,分别表示文件个数n和磁带的长度L。接下来的1行中,有n个正整数,表示程序存放在磁带上的长度。

    输出格式:

    输出最多可以存储的程序数。

    输入样例:

    6 50 
    2 3 13 8 80 20

    输出样例:

    5
    

    三 . 算法描述

    1.贪心策略:

    将磁带长度从小到大排好序,设一个sum = L,剩余长度大于即将被减的磁带长度,则将磁带从L中减去,每减一次计数器加一。

    2.代码

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

    四 . 算法时间空间复杂度

    时间复杂度:O(nlogn)

    调用了快排

    空间复杂度:O(n)

    一维数组

    五 . 心得体会

    一开始写的时候我和同伴都忘记了sort函数的头文件,翻了笔记之后加了上去,以后要注意这一点。

  • 相关阅读:
    TypeError: 'ExcelData' object is not iterable
    输出重定向
    联想Thinkpad T450 屏幕更换记录
    C-sysytem命令的使用
    CMD命令大全
    Ubuntu16.04 添加 Docker用户组
    Docker学习
    Linux系统卡死后紧急处理
    Django之ModelForm详解
    Django的ORM实现数据库事务操作
  • 原文地址:https://www.cnblogs.com/Ygrittee/p/10039444.html
Copyright © 2020-2023  润新知