1. 程式人生 > 實用技巧 >第四章貪心演算法

第四章貪心演算法

1.你對貪心演算法的理解

貪心演算法跟動態規劃一樣,都是解決最優化的問題。而求解最優化問題通常又是通過一系列的求解子問題的步驟。貪心演算法在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,貪心演算法不從整體最優上加以考慮,所做出的僅是在某種意義上的區域性最優解,並不能保證得到最優解。可是如果得不到最優解,那就不是我們想要的東西了,所以我們在用貪心演算法解決問題時要證明在這個問題中,用貪心法能得到最優解。

2.請選擇一道作業題目說明你的演算法滿足貪心選擇性質

我選擇的是汽車加油問題


大致演算法如下:

for(int i=1;i<=k;i++)
    {
        t
+=distance[i]; if(t+distance[i+1]>n) { count++; t=0; } if(distance[i]>n) { cout<<"No Solution!"<<endl; return 0; } }

使車在在有油的前提下,有得越遠越好,這就是貪心演算法,選擇目前最好的選擇。

滿足貪心選擇性質,

汽車加滿油能走m米,各個相鄰站距離分別為x1,x2,x3...xk

其中x1+x2<m,x1+x2+x3>m

假設,(x1,xi...)為一個滿足貪心選擇性質的最優解,其加油站數為n,

因為x1+x2<m,

而(x2,xi....)也滿足,且加油站數小於等於n

則該演算法滿足貪心選擇性質

3.請說明在本章學習過程中遇到的問題及結對程式設計的情況

我的結對夥伴是何雨婷,這次還是她負責打程式碼,我在旁觀看。有些題何不會那麼快想出來,而我先想出來了,我會解釋給她聽,而為了讓其更好地理解,我會先把思路捋清楚再敘述,而她也能根據我的思路把演算法打出來。我覺得這是很大的一個收穫吧,自己懂不是真的懂,能給別人講明白才是真正的領悟到了。