算法第4章實踐報告
阿新 • • 發佈:2018-11-26
ret 第一個 ng- 要求 min include spa view 時間復雜度
1、實踐題目
7-3 程序存儲問題 (90 分)
2、問題描述
設有n 個程序{1,2,…, n }要存放在長度為L的磁帶上。程序i存放在磁帶上的長度是 li,1≤i≤n。 程序存儲問題要求確定這n 個程序在磁帶上的一個存儲方案, 使得能夠在磁帶上存儲盡可能多的程序。 對於給定的n個程序存放在磁帶上的長度,計算磁帶上最多可以存儲的程序數。
輸入格式:
第一行是2 個正整數,分別表示文件個數n和磁帶的長度L。接下來的1行中,有n個正整數,表示程序存放在磁帶上的長度。
輸出格式:
輸出最多可以存儲的程序數。
輸入樣例:
在這裏給出一組輸入。例如:
6 50
2 3 13 8 80 20
輸出樣例:
在這裏給出相應的輸出。例如:
5
3、算法描述
即最短程序優先,先將給出的n個程序排序,然後從第一個最小的開始存放,保證可存儲的程序數最大。
#源代碼
#include<iostream> #include <algorithm> using namespace std; int main(){ int a[100]; int n,L; cin>>n>>L; for(int i=0;i<n;i++){ cin>>a[i]; } sort(a,a+n);int j=0,sum=0; while(j<n){ sum=sum+a[j]; if(sum<=L)j++; else{break;} } cout<<j; return 0; }
4、算法時間及空間復雜度分析(要有分析過程)
時間復雜度:因為調用快排,為O(nlogn)
空間復雜度:O(n)
5、心得體會
這道題我在敲的過程中最開始把"cout<<j"放入了上面的while循環中,導致一直有一個樣例過不去,經過與同伴仔細分析後,我們發現這樣會使得當所有程序剛好存放時會沒有輸出,我們當即改正,大大提高了效率。
算法第4章實踐報告