貪心演算法將問題分解為多個子問題,然後分別對每乙個子問題求最優解,最後將所有子問題的解相加得到原問題的解,在某些時候貪心演算法可得原問題的乙個最優解,某些時候可得較好的解。
刪數問題
給定n位正整數a,去掉其中任意k≤n 個數字後,剩下的數字按原次序排列組成乙個新 的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最 小的刪數方案。
第 1 行是1 個正整數 a。第 2 行是正整數k。
輸出最小數。
在這裡給出一組輸入。例如:
178543
4
在這裡給出相應的輸出。例如:
13
1 #include2using
namespace
std;
3#define ll long long45
strings;6
int a[10005];7
intk;89
intmain() 25}
26 len--;27}
2829 i = 0;30
while (i<=len-1 && a[i]==0) i++; //
快進到開頭不是0
3132
if (i ==len)
33 cout <<0
<34else
35for(j=i; j<=len-1; j++)
36 cout <3738
return0;
39 }
演算法:若前一位大於後一位,則將此前一位刪去,將後一位及後面所有數向前挪一位。
同時,要謹慎的排除開頭為零的情況。
遇到的問題:選擇的貪心演算法不正確/想不到適合的貪心策略
結對程式設計情況:獨立程式設計,互相查缺補漏,提出測試點,對同一方法給出細節上不同的實現方法,拓寬了思路
演算法第四章作業
1.我對貪心演算法的理解 貪心演算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態...
演算法第四章作業
一 對貪心演算法的理解 貪心演算法的基本要素是 貪心選擇性質和最優子結構性質 貪心選擇每次選取當前最優解,可以依賴以往的選擇,但絕不依賴於將來所做的選擇,也不依賴於子問題的解。貪心演算法通常以自頂向下的方式進行。二 汽車加油問題的貪心選擇性質 汽車應選擇在能到達的前提下離自己最遠的加油站進行加油 i...
演算法第四章作業
我的理解 主要是在貪心二字上面,但是重要的是在哪些方面上貪心,是解決題目的最重要的思路。因此要考慮貪心選擇性質和子結構性質 貪心選擇性質 從區域性的最優解擴充套件到整體的最優解 最優子結構性質 整體的最優解包含子問題的最優解 由於要計算汽車從起點到終點的最少加油次數 故,每次可以盡可能多的在滿油量內...