1.問題描述
給定n位正整數a,去掉其中任意k≤n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。如果數字最前面有0不輸出。
2.演算法描述
3.問題求解
顯然高位數字的數值大小更對數字的大小起決定性作用,因此從高位開始貪心,挑選小數字數字保留。
簡單貪心刪k法的思路是從高位往低位貪心,當當前可刪k個數時,選取前k+1個高位,找到最小數(有多個最小則優先選定靠左高位數),該最小數即保留數字,該位的左方數字刪去
從第乙個數開始遍歷,到尋找到單調遞減的第乙個數(即單調遞增的最後乙個數),則刪除,若無單調遞減子串行,則刪掉最後乙個非遞減序列的數;每找到乙個就又從頭開始。即每做一次刪數,就是一次貪心選擇,刪掉此數剩下的數為組成最小,經過證明,此結論正確
4.心得體會
基礎不牢地動山搖,以後要好好學習。
演算法第四章上機實驗報告
實踐題目名稱 最優合併問題 問題描述 給定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 個正整數...