算法 第四章實踐
阿新 • • 發佈:2018-12-01
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.心得體會(對本次實踐收獲及疑惑進行總結)
本次實踐采用貪心算法,主要是要確定貪心策略,這樣就會簡便一些,在學習了貪心算法以後在實踐時運用使我對此算法理解更加地深刻,且總體來說此題比較簡單也容易上手所以沒有遇到特別大的困難。
算法 第四章實踐