演算法第四章上機實踐報告

2022-09-19 05:21:13 字數 1145 閱讀 7937

4-1 程式儲存問題

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

第一行是2 個正整數,分別表示檔案個數n和磁帶的長度l。接下來的1行中,有n個正整數,表示程式存放在磁帶上的長度。

輸出最多可以儲存的程式數。

在這裡給出一組輸入。例如:

6 50 

2 3 13 8 80 20

在這裡給出相應的輸出。例如:

5
#include#includeusing namespace std;

int main()

sort(l,l+n);

int sum=0;

int count=0;

for (int i=0;il) break;

count++;

}cout《由小到大將程式的長度存放進磁帶,直到磁帶長度不夠為止,此時可以存放的程式個數為最大值。

**中有兩個for迴圈,時間複雜度都為o(n),由於使用了sort函式將陣列公升序排序,而sort函式的時間複雜度為o(n*logn),所以演算法的時間複雜度為o(n*logn)。 

對於許多最優化問題,使用動態規劃法來求最優解有些殺雞用牛刀了,這時若能使用貪心演算法,便可以解決問題更加簡單、更加高效。貪心演算法的每一步都做出區域性問題的最優選擇,若區域性問題的最優解能導致全域性最優解,那麼使用貪心演算法可以簡單高效的得到問題答案。

但是貪心演算法有侷限性,它並不適用於所有問題,使用貪心演算法的問題需要滿足貪心選擇性質最優子結構性質:即對於乙個具體問題,必須證明每一步所作的貪心選擇最終導致問題的整體最優解,且問題的最優解需要包含其子問題的最優解。

運用貪心演算法解決問題時,最重要的是如何制定最為合適的貪心策略,以確保每一步都能求解到最優解,從而才能得到整個問題的最優解。

貪心演算法不僅僅對解決演算法題目時有著巨大的幫助,在實際生活中,為獲得最大效益,人們也在不停地在使用著貪心策略,因此學好貪心演算法對學習和生活都有著巨大的幫助,因此以後要更加認真的學習貪心演算法,以豐富學識,便利生活。

演算法第四章上機實踐報告

1.實踐題目 4 1 程式儲存問題 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。2.問題描述 在...

演算法第四章上機實踐報告

引論 相比與動態規劃演算法,貪心演算法是比較容易理解的,其思想就在於得到當前狀態下區域性最好選擇,當乙個問題的最優解包含其子問題的最優解時,即每個貪心選擇都是子問題的最優解,那麼就能的到該問題的最優解了。本次上機實踐的題目雖然不是特別難,但相比前兩次,這一次上機實踐的效率遠低於上兩次,因為在實踐的時...

第四章演算法上機實踐報告

第四章演算法上機實踐報告 實踐題目 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。輸入格式 第一行...