1. 程式人生 > >演算法 第四章實踐

演算法 第四章實踐

1.實踐題目

程式儲存問題

2.問題描述

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

3.演算法描述

for(int i=0;i<n;i++)
cin>>a[i];//將程式的長度存放在陣列之中

sort(a,a+n);//將陣列中的元素排序 

int num=0;int x=0;//新設定一個變數X為已存放的程式長度之和
for(int i=0
;i<n;i++) { x=x+a[i];//從小到大加上陣列內的程式長度 if(x> l) break;//當x大於磁帶長度時就停止 else num++;//否則可儲存程式數加1

 

4.演算法時間及空間複雜度分析(要有分析過程)

 時間複雜度:O(nlogn)

運用了sort()排序

空間複雜度:O(n)

運用了一維陣列儲存程式長度

5.心得體會(對本次實踐收穫及疑惑進行總結)

本次實踐採用貪心演算法,主要是要確定貪心策略,這樣就會簡便一些,在學習了貪心演算法以後在實踐時運用使我對此演算法理解更加地深刻,且總體來說此題比較簡單也容易上手所以沒有遇到特別大的困難。