演算法第四章實驗報告

2022-09-10 04:42:08 字數 878 閱讀 1530

4-1 程式儲存問題 (40 分)

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

即給定磁帶總容量和各個程式的占用空間,詢問該磁帶最多能儲存幾個程式。

貪心演算法:只需要將各個程式從小到大排序,並拿乙個變數sum儲存已占用的容量總和,進行對比即可得到結果。

具體**如下:

時間複雜度:輸入需要o(n)的時間進行輸入,最快用o(nlogn)的時間複雜度進行排序,使用o(n)的時間進行結果疊加,總時間複雜度為o(nlogn),時間複雜度花費在排序上。      

空間複雜度:該演算法並沒借助輔助空間,只是需要乙個臨時變數儲存當前占用容量總和,所以為o(1)。

這道題看著很簡單,但會忽略如果全部程式都可以裝下這種情況,即

貪心演算法通常以自頂向下的方法簡化子問題,會陷入區域性最優解情況

區域性最優是指解在一定範圍或區域內是最優的,或求解問題的方法在一定限制條件下是最優的

第四章演算法實驗報告

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

演算法第四章實驗報告

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

演算法第四章實驗報告

4 1 程式儲存問題 程式 若干個磁帶長度確定,目標是在程式上放盡可能多的磁帶。演算法 貪心演算法。貪心策略 每次儲存當前狀況下長度最小的磁帶,使儲存數量最大。步驟 1 使用sort函式對n個程式從小到大進行排序 2 按照順序將磁帶存入程式中,num 3 直到超出程式總長度l,跳出迴圈 includ...