刪除數字求最小值(貪心)

2021-08-29 18:34:33 字數 898 閱讀 5300

演算法分析:

我們可以很容易的發現該題目可以使用貪心演算法。

比如,上述正整數5476579228,要刪除k=4個數字獲得乙個最小的6位數字。然而我們知道剩下的6位數的首位不可能從54765/79228不可能從79228中得到(why?)因為題目要求要按照原來正整數的左右次序排列,如果在79228中刪除後面的數也只能從後面5位找。所以,我們必須要在54765中找,假設我們在54765中找到4最小,取出來後那麼就還剩下5個數字需要找(k+1),我們取了4以後,因為要按照原來左右次序,所以4之前的5不能找了,只能找4後面的,因為這裡要找五位數字那麼第二位只能從765/79228只能從(7657)裡面找最小的為5,接著第三位再找5以後的數字(79)找到數字7,第四位在(92)中找到2,第五位就是2,第六位就是8。

我們通過上述分析可以發現使用兩重迴圈即可得到第一重迴圈就是求(n-k)位數字,第二重迴圈就是實現每次找到哪乙個區間內的最小數每找到一位就存入陣列。

源**:

#include#includeusing namespace std;

int num[101];

int index[101];

int main()

int start = 0; //記錄每次從哪一位數字的下一位開始找最小值

int index1 = 0; //記錄每次找到最小值的下標

int min; //記錄當前找到的最小值

for(int i = 1;i<=n-k;i++)

}start = index1; //更新尋找下乙個數字的開始下標

index[i] = min; //儲存得到的最小位數

} for(int i = 1;i<=n-k;i++)

return 0;

}

刪除k個數字後的最小值 貪心演算法 Python

一 題目描述 給出乙個整數,從該整數中去除k個數字,要求剩下的數字形成的新整數盡可能小。如 1593212,刪除3個數字後的,新整數的最小情況是1212 30200,刪除乙個數字,新整數的最小情況是200 二 解題思路 這個題可以用貪心演算法來解,每次求出刪除乙個數字後,讓剩下數字形成的新整數達到最...

分組求最大最小值

按某一欄位分組取最大 小 值所在行的資料 資料如下 name val memo a 2 a2 a的第二個值 a 1 a1 a的第乙個值 a 3 a3 a的第三個值 b 1 b1 b的第乙個值 b 3 b3 b的第三個值 b 2 b2b2b2b2 b 4 b4b4 b 5 b5b5b5b5b5 建立表...

求區域性最小值問題

我們可以採用二分法,先判斷最後乙個元素和第乙個元素是否是區域性最小值,如果是否的話,那在陣列中肯定存在乙個區域性最小值的元素,繼續遍歷即可 public static int getlessindex int arr if arr.length 1 arr 0 arr 1 if arr arr.le...