程式儲存問題
設有n
個程式要存放在長度為
l的磁帶上。程式
i存放在磁帶上的長度是 li,
1≤i≤n
。 程式儲存問題要求確定這
n 個程式在磁帶上的乙個儲存方案, 使得能夠在磁帶上儲存盡可能多的程式。 對於給定的
n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。
第一行是
2 個正整數,分別表示檔案個數
n和磁帶的長度
l。接下來的
1行中,有
n個正整數,表示程式存放在磁帶上的長度。
輸出最多可以儲存的程式數。
在這裡給出一組輸入。例如:
6 50
2 3 13 8 80 20
結尾無空行
在這裡給出相應的輸出。例如:
把程式按大小從小到大排序,為了使在一定空間下能盡可能裝下多的程式,同時沒裝下乙個計數
+1,直到裝不下結束計數。
#include
#include
using namespace std;
int main()
sort(arr,arr+n);
int sum=0;
int count=0;
for(int j=0;j
}cout<
return 0;
}時間複雜度:呼叫了一次
sort
函式,時間是複雜度為o(
nlogn
)空間複雜度:輔助變數
sum和
count
,所以是o(
1)在我看來,貪心演算法為動態規劃中的一種,有著最優子結構的特性,高效方便,但同時貪心演算法著眼當前區域性最優解有時並不一定得到最後全域性最優解,因此在解決問題時仍需思考貪心演算法適不適用。
演算法第四章上機實驗報告
實踐題目名稱 最優合併問題 問題描述 給定k 個排好序的序列,用 2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m n 1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。為了進行比較,還需要確定合...
演算法第四章上機實驗報告
題目 最優合併問題 1.問題描述 給定k 個排好序的序列,用 2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m n 1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。為了進行比較,還需要確定合併這...
演算法第四章上機實驗報告
4 1 程式儲存問題 40 分 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。第一行是2 個正整數...