算法第四章上机实践报告

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.心得体会

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

 
posted @ 2019-11-17 19:49  .Daylight  阅读(124)  评论(0编辑  收藏  举报