一、實踐題目
刪數問題
二、問題描述
給定n位正整數a,去掉其中任意k≤n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。如果數字最前面有0不輸出。
三、演算法描述
1.採用貪心法。貪心策略是:刪除從左到右第乙個遞減序列的第乙個數,當序列是非遞減時,刪除最後乙個數。
2.迴圈第一步k次。
3.利用flag刪除前置的0。
四、演算法時間複雜度以及空間複雜度的分析
時間複雜度:o(nk)
空間複雜度:o(1)
五、心得體會
一開始我們採用的是找出序列中最大的數進行刪除,但是發現這樣是不對的,對此我認為選擇乙個正確的貪心策略是非常重要的。
六、貪心演算法的個人體會和思考
1、貪心演算法的貪心選擇性質和最優子結構性質是很重要的。
2、在某些情況下,貪心演算法並不能得到最優結果。
第四章演算法實驗報告
4 3 最優合併問題 30 分 給定k 個排好序的序列,用 2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m n 1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。為了進行比較,還需要確定合併這個...
演算法第四章實驗報告
4 1 程式儲存問題 程式 若干個磁帶長度確定,目標是在程式上放盡可能多的磁帶。演算法 貪心演算法。貪心策略 每次儲存當前狀況下長度最小的磁帶,使儲存數量最大。步驟 1 使用sort函式對n個程式從小到大進行排序 2 按照順序將磁帶存入程式中,num 3 直到超出程式總長度l,跳出迴圈 includ...
演算法第四章實驗報告
4 1 程式儲存問題 40 分 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給 定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。即給定磁帶總容量和...