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

算法 第四章實踐

span 長度 能夠 要求 一維數組 貪心算法 class 維數 問題

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.心得體會(對本次實踐收獲及疑惑進行總結)

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

算法 第四章實踐