算法第四章上机实践报告

时间:2019-11-18
本文章向大家介绍算法第四章上机实践报告,主要包括算法第四章上机实践报告使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、程序存储问题

1.实践题目

设有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

2.问题描述

参数:n 表示文件个数;L表示磁带的长度。

输入:第一行 n L ;第二行 n个程序放在磁带上的长度

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

3.算法描述

  1.用一个数组保存输入的n个程序在磁带上的长度

  2.对数组进行从小到大的排序

  3.从左往右,用temp保存选中的程序在磁带上的长度

  4.如果temp<L,则证明可以选择这个程序,于是选中程序个数cnt+1

  5.直到temp>L,输出cnt的值

贪心策略:每次都选择磁带长度最小的那个程序

证明:假设最优子结构里不包括一个最小的程序,但是把最有子结构里的一个程序与最小的程序替换,结果反而更好,说明最优子结构包括最小的程序,假设不成立

4.算法时间及空间复杂度分析

  1.时间复杂度:基本运算输入数组为n, sort方法的时间复杂度为nlogn, 后面的时间是6n,综合起来就是 O(n)

  2.空间复杂度:开辟了空间为n的数组,所以空间复杂度为O(n)

二、 删数问题

1.实践题目

给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新 的正整数。对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最 小的删数方案。

输入格式:

第 1 行是1 个正整数 a。第 2 行是正整数k。

输出格式:

输出最小数。

输入样例:

在这里给出一组输入。例如:

178543 
4 

输出样例:

在这里给出相应的输出。例如:

  13

2.问题描述

原文地址:https://www.cnblogs.com/666AAAA/p/11882253.html