算法第四章实验报告
2021/11/15 1:09:59
本文主要是介绍算法第四章实验报告,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
4-1 程序存储问题
设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。
输入格式:
第一行是2 个正整数,分别表示文件个数n和磁带的长度L。接下来的1行中,有n个正整数,表示程序存放在磁带上的长度。
输出格式:
输出最多可以存储的程序数。
二.算法描述
#include<bits/stdc++.h> using namespace std; int main() { int n,l; int count =0; //计数器计算存储了几个 cin>>n>>l; int a[n+1]; for(int i = 0;i<n;i++) { cin>>a[i]; } sort(a,a+n);//默认升序 for(int i = 0;i<n;i++) { if(a[i]<=l) { l -=a[i];//l 代表总长 count++; } } cout<<count; return 0; }
三.问题求解
1.贪心算法(贪心策略)
目的是要存储最多的程序,贪心算法策略为利用sort函数对程序占用量进行排序,选择最小的,从最小的开始存储,验证得到最优方案里面一定也包含从最小开始选的方案,说明此策略符合最优解,贪心算法成立。
2.算法解释
利用总长为l,利用数组存储每一个程序占用大小,每存储一个程序,总长l减去对应存储进去程序所需占用的大小,此时计数器count加一,每次循环更新剩余的l的长度,判断是否够存储下一个程序。
四.贪心算法心得体会、
贪心算法总是作出在当前看来最好的选择。
基本思想可以概括为:从问题的某一个初始解出发,向给定的目标推进,每次都做出当前最佳的贪心选择,不断将问题实例归纳为更小的相似子问题。
贪心算法常用于解决最大值或最小值的优化问题。贪心算法能求得最优解的问题一般具有两个重要性质:
贪心选择性质:问题的整体最优解可以通过一系列局部最优的选择达到。这是贪心算法可行的第一个基本要素,也是贪心算法问题和动态规划问题的主要区别。贪心算法通常自顶向下,以迭代的方式做出相继的贪心选择。
最优子结构性质:问题的整体最优解包含子问题的最优解。
这篇关于算法第四章实验报告的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-09必试!帮 J 人团队解决物流错发漏发的软件神器!
- 2025-01-09不容小觑!助力 J 人物流客服安抚情绪的软件!
- 2025-01-09为什么医疗团队协作离不开智能文档工具?
- 2025-01-09惊叹:J 人团队用啥软件让物流服务快又准?
- 2025-01-09如何利用数据分析工具优化项目资源分配?4种工具推荐
- 2025-01-09多学科协作难?这款文档工具可以帮你省心省力
- 2025-01-09团队中的技术项目经理TPM:工作内容与资源优化策略
- 2025-01-09JIT生产管理法:优化流程,提升竞争力的秘诀
- 2025-01-092024全球互联网流量分析报告
- 2025-01-09如何提升学校行政管理中的进度追踪效率?4个实用策略和3款工具推荐