第四章上機實踐報告

2022-09-12 19:42:07 字數 749 閱讀 1446

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

第一行是2 個正整數,分別表示檔案個數n和磁帶的長度l。接下來的1行中,有n個正整數,表示程式存放在磁帶上的長度。

輸出最多可以儲存的程式數。

在這裡給出一組輸入。例如:

6 50 

2 3 13 8 80 20

在這裡給出相應的輸出。例如:

5

先貼出我的**

#include #include using namespace std;

int main()

} if(status <= length) cout << num;

}

貪心策略:因為程式長度的輸入並沒有格式要求,所以只能先將程式長度公升序輸出,然後每次往磁帶增加乙個程式,通過status判斷磁帶當前的狀態是否已滿。若status > 磁帶長度length,則拿出已裝入的程式,輸出i - 1。若status一直小於length,輸出程式的個數就可以了。

時間複雜度:sort的時間複雜度是o(nlogn),因此這個演算法的時間複雜度也是o(nlogn)。

心得:我這個演算法有點太簡單了...問題設定得再難一點就解決不了。需要學習更好的演算法,運用好思維能力。

第四章上機實踐報告

實踐題目 4 2 刪數問題 110 分 給定n位正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新 的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最 小的刪數方案。輸入格式 第 1 行是1 個正整數 a。第 2 行是正整數k。輸出格式 輸出最...

第四章上機實踐報告

刪數問題 110 分 給定n位正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新 的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最 小的刪數方案。第 1 行是1 個正整數 a。第 2 行是正整數k。輸出最小數。在這裡給出一組輸入。例如 178...

第四章上機實踐報告

一 實踐題目 二 題目描述 給定一串串行,每次取兩個數的值加起來,然後把兩個數取出來,將兩個數加起來的值放入序列 三 演算法描述 題目大意其實類似哈夫曼編碼,只是他還要再求乙個最大值的 因此進行兩次操作,一次每次都是取最大的兩個數,另一次每次都是取最小的兩個數 每次取到的兩個最大或者最小的數a b進...