貪心演算法 刪除問題

2022-06-22 06:51:14 字數 983 閱讀 3782

(1)問題描述:給定 n 位正整數 a,去掉其中任意 k <= n 個數字後,剩下的數字按原來次序排列組成乙個正整數。對於給定的 n 為正整數 a 和正整數 k 設計乙個演算法找出剩下數字組成的新數最小的刪數方案;

(2)演算法設計:對於給定的正整數 a,計算刪去 k 個數字後得到的最小數;

(3)演算法思想:刪掉要刪的,留下要留的;在給定的數 a,對於其每一位上的數,採用貪心演算法,區域性最優的方式,留下最小的數字;前提:在刪除過程中,急要保證該位上的數字最小,又要確保刪除數時夠刪的原則;

(4)核心**:

public

class

deletedata 】

while(num != 0)

//data 陣列逆置

for (int i = 0, j = data.length - 1; i < j; i++, j--)

}/*** 刪除

*/private

static

void

deletedata()

}if (index >= 0)

find = index + 1; //

下次尋找直接從 index 的下一位開始,因為當前位已經是最小的,不必重複查詢

total--;}}

/*** 輸出

*/private

static

void

print() }}

public

static

void

main(string args)

}

(5)輸入輸出:

請輸入給定的正整數:

178543請輸入刪除正整數的個數:

2刪除後最小值為:

13

(6)總結:刪數問題極大的反應出貪心演算法的思想,每次迴圈刪數時,都尋找區域性最優解,最後刪除完之後,留下的就是最優解;

貪心演算法,過載問題

說明 執行環境 ubuntu input.txt 6 50 2 3 13 8 80 20 裝入的資料是 2 3 8 13 20 output.txt 5 源 include include include include include define n 20 快速排序遞迴,a代表陣列,low代表陣...

貪心演算法 裝箱問題

貪心演算法中必須設定乙個貪心準則 來尋求每一步的最優解,但最後往往不是問題的整體最優解。問題 假設有n個物品,其體積為v1,v2,v3,v4.v n,有若干個體積為v的箱子 理論物品的體積應該小於箱子的體積 要求把所有物品全部裝入箱子中,要求開啟的箱子數最少。分析 怎樣合理化分配才能使得開啟的箱子數...

貪心演算法(裝箱問題)

貪心演算法的基本思想是找出整體當中每個小的區域性的最優解,並且將所有的這些區域性最優解合起來形成整體上的乙個最優解。因此能夠使用貪心演算法的問題必須滿足下面的兩個性質 1.整體的最優解可以通過區域性的最優解來求出 2.乙個整體能夠被分為多個區域性,並且這些區域性都能夠求出最優解。3.區域性最優解不一...