首页 > 编程语言 > 详细

算法第四章上机实践报告

时间:2019-11-17 20:13:04      阅读:75      评论:0      收藏:0      [点我收藏+]

 

1.实践题目

程序存储问题

 

 

 

2.问题描述

题目要求确定n 个程序在给定长度的磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。

 

 

 

3.算法描述

贪心策略:选择可选的程序中长度最小的那个

贪心选择性质:

技术分享图片

 

 

 最优子结构性质:

 技术分享图片

技术分享图片
 1 import java.util.Arrays;
 2 import java.util.Scanner;
 3 
 4 public class ProgramStorage {
 5     public static void main(String[] args) {
 6         Scanner input = new Scanner(System.in);
 7         int n = input.nextInt();
 8         int L = input.nextInt();
 9         int[] length = new int[n];
10         for (int i = 0; i < n; i++) {
11             length[i] = input.nextInt();
12         }
13         Arrays.sort(length);
14         int temp = 0, count = 0;
15         for (int i = 0; i < n; i++) {
16             if ((length[i] + temp) <= L){
17                 temp += length[i];
18                 count++;
19             }
20         }
21         System.out.print(count);
22     }
23 }
View Code

 

 

 

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

时间复杂度:将数组从小到大进行排序,故时间复杂度为O(nlogn)。

空间复杂度:算法中运用到长度为1的一维数组来存储程序长度,故空间复杂度为O(n)

 

 

5.心得体会

贪心算法最关键的就是针对问题作出最佳选择,虽然这次实践做的题都比较困难、不太容易做出来,但经过这次实践,我对贪心算法有了更深入的理解,因此在掌握书本上的内容后,要多做题,以达到熟练掌握贪心算法的目标。

则(

技术分享图片

=1liyi = l1

算法第四章上机实践报告

原文:https://www.cnblogs.com/Daylight-Deng/p/11877720.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!