第四章上機實踐報告

2022-08-26 04:45:09 字數 643 閱讀 4577

一、實踐題目

二、題目描述

給定一串串行,每次取兩個數的值加起來,然後把兩個數取出來,將兩個數加起來的值放入序列

三、演算法描述

題目大意其實類似哈夫曼編碼,只是他還要再求乙個最大值的

因此進行兩次操作,一次每次都是取最大的兩個數,另一次每次都是取最小的兩個數

每次取到的兩個最大或者最小的數a、b進行合併,合併後又形成乙個新的數(c = a+b)

再將c放入,和剩下的數進行比較,再挑出最小的或最大的,一直進行下去

運用優先佇列,每次取出a、b時,便從佇列中把a、b彈出去,再讓c(c=a+b)進隊

四、演算法時間和空間複雜度分析

時間複雜度:佇列中有n個數,因為每次都是取佇列中兩個數相加,直到隊列為空,用乙個while迴圈即可,只需要n次;而優先佇列中的pop(),push() 需要log n

因此時間複雜度為 o(nlog n)

空間複雜度:  需要兩個佇列的空間,o(n)

五、心得體會

這次的題感覺比上次動態規劃的容易一些,所以還是比較快做出來了。其實還是有點像動態規劃吧,找乙個貪心演算法,然後每一步都用那個貪心策略即可。

第四章上機實踐報告

實踐題目 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...

第四章上機實踐報告

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