1. 程式人生 > >第四章上機報告

第四章上機報告

一。實踐題目

7-3 程式儲存問題問題描述

二。問題描述

設有n 個程式{1,2,…, n }要存放在長度為L的磁帶上。程式i存放在磁帶上的長度是 li,1≤i≤n。 程式儲存問題要求確定這n 個程式在磁帶上的一個儲存方案, 使得能夠在磁帶上儲存儘可能多的程式。 對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。

三。演算法描述

貪心策略為在所有未放進磁帶的程式中選擇長度最小的程式放進磁帶,所以先對程式先進行長度排序,再從小開始逐一放到磁帶,直到磁帶裝滿

    sort(a,a+n);
    for
(int i=0;i<n;i++){ L=L-a[i]; if(L>=0){ sum++; } if(L<0) break; }

四。演算法時間及空間複雜度分析

演算法中有快速排序O(nlogn),進行單迴圈O(n),所以時間複雜度為O(nlogn)。

使用一維陣列,所以空間複雜度為O(n)。

五。心得體會

對分析貪心演算法性質有了更好的提升,在分析時更注重在不同情況下貪心演算法對子問題求解時可以正確實現貪心策略。