演算法第四章實驗報告

2022-09-10 02:48:12 字數 1030 閱讀 7232

4-1 程式儲存問題

程式、若干個磁帶長度確定,目標是在程式上放盡可能多的磁帶。

演算法:貪心演算法。

貪心策略:每次儲存當前狀況下長度最小的磁帶,使儲存數量最大。  

步驟:1、使用sort函式對n個程式從小到大進行排序;

2、按照順序將磁帶存入程式中,num++;

3、直到超出程式總長度l,跳出迴圈;

#include

#include

using namespace std;

int li[10000];

int maxnum(int n,int len)

return num;

}int main()

int re=maxnum(n,len);

cout<

sort排序演算法時間複雜度:o(nlogn)

遍歷陣列時間複雜度:o(n)

由於o(nlogn)>o(n),因此該演算法的時間複雜度應為o(nlogn)

步驟:①建立數學模型來描述問題

。②把求解的問題分成若干個子問題

。③對每個子問題求解,得到子問題的區域性最優解

。④把子問題的解區域性最優解合成原來解問題的乙個解。

2個特徵:

1、貪心選擇性質

乙個問題的整體最優解可通過一系列區域性的最優解的選擇達到,並且每次的選擇可以依賴以前作出的選擇,但不依賴於後面要作出的選擇。這就是貪心選擇性質。對於乙個具體問題,要確定它是否具有貪心選擇性質,必須證明每一步所作的貪心選擇最終導致問題的整體最優解

2、最優子結構性質

乙個問題的最優解包含其子問題的最優解時,稱此問題具有最優子結構性質。問題的最優子結構性質是該問題可用貪心法求解的關鍵所在。在實際應用中,至於什麼問題具有什麼樣的貪心選擇性質是不確定的,需要具體問題具體分析。

第四章演算法實驗報告

4 3 最優合併問題 30 分 給定k 個排好序的序列,用 2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m n 1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。為了進行比較,還需要確定合併這個...

演算法第四章實驗報告

一 實踐題目 刪數問題 二 問題描述 給定n位正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。如果數字最前面有0不輸出。三 演算法描述 1.採用貪心法。貪心策略是 刪除從左到右第...

演算法第四章實驗報告

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