一、實踐題目
程式儲存問題
設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1≤i≤n。 程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案, 使得能夠在磁帶上儲存盡可能多的程式。 對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。
第一行是2 個正整數,分別表示檔案個數n和磁帶的長度l。接下來的1行中,有n個正整數,表示程式存放在磁帶上的長度。
輸出最多可以儲存的程式數。
在這裡給出一組輸入。例如:
6 50
2 3 13 8 80 20
在這裡給出相應的輸出。例如:
5
二、問題描述
設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1≤i≤n。 程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案, 使得能夠在磁帶上儲存盡可能多的程式。 對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。
三、演算法描述
1、貪心策略:按照從小到大排序,先放最小的,然後依次,盡可能放最多個數。
**如下:
sort(a,a+n);for(int i=0;i)
}
2、判讀是否超出最大磁碟長度
設定乙個count值,每次放進磁碟就+1,然後判斷已放入長度是否大於總長度。
3、具體**
#include#includeusing
namespace
std;
intmain()
sort(a,a+n);
for(int i=0;i)
}cout
}
四、演算法時間及空間複雜度分析
1、時間複雜度:本演算法主要時間複雜度在於陣列的排序問題,所以時間複雜度為o(nlog n)。
2、空間複雜度:輔助變數與問題規模無關,空間複雜度為o(1)。
五、心得體會
此次實驗主要是貪心演算法的實踐,審題的分析懂得認真思考貪心演算法,乙個個篩選哪個才是適用於題目的貪心策略,最後再**實現。主要是思維的拓展,思考能有哪些貪心策略,哪些行不通呀等等,學會了舉反例。另外結對程式設計方面,兩人思考多了,可以更好的思考貪心策略,並且互相debug時候可以彌補思維空缺。
演算法第四章上機實踐報告
1.實踐題目 4 1 程式儲存問題 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。2.問題描述 在...
演算法第四章上機實踐報告
引論 相比與動態規劃演算法,貪心演算法是比較容易理解的,其思想就在於得到當前狀態下區域性最好選擇,當乙個問題的最優解包含其子問題的最優解時,即每個貪心選擇都是子問題的最優解,那麼就能的到該問題的最優解了。本次上機實踐的題目雖然不是特別難,但相比前兩次,這一次上機實踐的效率遠低於上兩次,因為在實踐的時...
第四章演算法上機實踐報告
第四章演算法上機實踐報告 實踐題目 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。輸入格式 第一行...