4-1 程式儲存問題 (40 分)
設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1≤i≤n。 程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案, 使得能夠在磁帶上儲存盡可能多的程式。 對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。
第一行是2 個正整數,分別表示檔案個數n和磁帶的長度l。接下來的1行中,有n個正整數,表示程式存放在磁帶上的長度。
輸出最多可以儲存的程式數。
在這裡給出一組輸入。例如:
6 50
2 3 13 8 80 20
結尾無空行
在這裡給出相應的輸出。例如:
要使磁帶上可以儲存的程式數最多,想著把長度短的先放到磁碟上,就能盡可能地利用磁碟空間,所以先將程式按照長度從短到長排序,再乙個個放到磁碟上。
#include
using namespace std;
int n, l;
int temp = 0;
int ans = 0;
int main()
sort(m,m+n);
/* for(int i = 0; i < n; i++)
*/for(int i = 0; i < n; i++)
}cout << ans;
return 0;
}時間複雜度,呼叫了一次sort函式,所以是o(nlogn)
空間複雜度,輔助變數ans和temp,所以是o(1)
我認為貪心演算法就是總是做出最正確的選擇,最快的去解決問題,這種思想在我們生活中無時無刻不發生著。但是能準確快速的找到貪心策略還需要我們多多去思考。
演算法第四章上機實驗報告
實踐題目名稱 最優合併問題 問題描述 給定k 個排好序的序列,用 2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m n 1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。為了進行比較,還需要確定合...
演算法第四章上機實驗報告
題目 最優合併問題 1.問題描述 給定k 個排好序的序列,用 2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m n 1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。為了進行比較,還需要確定合併這...
演算法第四章上機實驗報告
1.問題描述 給定n位正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。如果數字最前面有0不輸出。2.演算法描述 3.問題求解 顯然高位數字的數值大小更對數字的大小起決定性作用,因...