(1)問題描述:給定 n 位正整數 a,去掉其中任意 k <= n 個數字後,剩下的數字按原來次序排列組成乙個正整數。對於給定的 n 為正整數 a 和正整數 k 設計乙個演算法找出剩下數字組成的新數最小的刪數方案;
(2)演算法設計:對於給定的正整數 a,計算刪去 k 個數字後得到的最小數;
(3)演算法思想:刪掉要刪的,留下要留的;在給定的數 a,對於其每一位上的數,採用貪心演算法,區域性最優的方式,留下最小的數字;前提:在刪除過程中,急要保證該位上的數字最小,又要確保刪除數時夠刪的原則;
(4)核心**:
publicclass
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.區域性最優解不一...