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

2022-09-01 03:12:08 字數 1271 閱讀 6586

一、實踐題目

程式儲存問題

設有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#include

using

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個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。輸入格式 第一行...