演算法 第三章作業

2022-07-09 23:33:16 字數 1989 閱讀 8422

一、作業題:挖地雷

在乙個地圖上有n個地窖(n≤200),每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且保證都是小序號地窖指向大序號地窖,也不存在可以從乙個地窖出發經過若干地窖後又回到原來地窖的路徑。某人可以從任意一處開始挖地雷,然後沿著指出的連線往下挖(僅能選擇一條路徑),當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使他能挖到最多的地雷。

第一行:地窖的個數;

第二行:為依次每個地窖地雷的個數;

下面若干行:

xi yi //表示從xi可到yi,xi最後一行為"0 0"表示結束。

k1-k2−…−kv //挖地雷的順序 挖到最多的雷。

△通過看鄰接表來確認兩地窖是否通路△

參考**如下:

1 #include2

using

namespace

std;34

bool b[201][201];//

判斷地窖是否有地雷

5int f[201],w[201],a[201];6

inti,j,n,l,k,x,y,ans;

7int

main()817

while(x!=0||y!=0

);18 f[n]=w[n];

19for(i=n-1;i>=1;i--)

20

27 l = k =0;//

重新賦值

28for(i=1;i<=n;i++)

29if(f[i]>k) k=f[i],l=i;

30 ans=k;

31 cout/

輸出起點

32while

(a[l])

3337 cout<

38 cout/

輸出最優結果

39return0;

40 }

1.1 根據最優子結構性質,列出遞迴方程式——>m[i] = max

ps.其中(i,j)∈e意味著兩條邊能通路,a[i]表示出發的點的本身地雷數,m[i]代表從地窖i出發挖到的最多地雷數!

1.2 給出填表法中表的維度、填表範圍和填表順序:

①維度:一維;②填表範圍:i1.3 分析該演算法的時間和空間複雜度:

①時間複雜度:  通過迴圈,得到時間複雜度為o(n²);

②空間複雜度:  由於需要申請二維陣列,則其空間複雜度也為o(n²);

二、對動態規劃的理解

仔細學下來,慢慢發現動態規劃法其實細節本質上還是分而治之的方法。我們在作業題中常常需要將題目情景劃分成許多個子問題的方式來解決。例如挖地雷這道題,①號地窖與②號和④號相連,於是在分析①的時候,可以分成兩個子問題:

於是動態規劃在演算法實現中會避免很多重複計算子問題的情況,轉而由獨立計算並記錄好的子問題結果求出大問題的解,大大提高了演算法的效率。

同時在動態規劃的學習中,對填表法的理解清晰了很多,覺得在敲**前的對題目的分析會減少在做題中的邏輯失誤。

課本所示動態規劃演算法的步驟大概分成四步:

(1)找出最優解的性質,並刻畫其結構特徵

(2)遞迴地定義最優值

(3)以自底向上的方式計算最優值(相當於我們的填表法順序)

(4)根據計算最優值時得到的資訊構造最優解

三、結對程式設計的情況

結對程式設計中的確不僅培養了合作敲**的能力,更增加了與隊友的溝通機會。剛開始可能由於自己的遞迴方程的理解失誤,所以導致一直有錯誤的測試點。之後通過討論,了解了正確的遞迴思路,敲出了乙份答案正確的**。但我和搭檔在解釋**思路和邏輯的過程中,她提出的一些問題讓我對自己的邏輯也產生了疑惑,於是我們整體還是比較迷糊的。最後通過老師對我們「邊界情況」部分**的講解我們才恍然大悟,有些時候搭檔也會幫你發現自己無法發現的錯誤點,所以結對程式設計對自己的成長有著一定的作用~下次的學習中也會更加努力學會溝通與合作!

演算法第三章作業

1.動態規劃是一種能夠減少重複運算的一種演算法,比較適合原問題能依賴於子問題解得,而子問題也能夠依賴於子子問題解得而出的問題。其次,動態規劃更適合於資料量較多的時候的一種演算法,當資料量沒有到達一定規模的時候,動態規劃演算法不能夠體現出足夠的優勢。如對於揹包問題的貪心演算法和動態規劃法 2.1 單調...

演算法第三章作業

我覺得動態規劃是一種分治法的偽高階型,它將乙個大問題可以分成若干個小問題後,解決子問題,然後將子問題的解插入到乙個表中,用乙個表來記錄所有的已經得到答案的子問題的解,後面就可以發現,無論子問題的解是否被用到,其都在表中,接著求問題便可以節省大量的時間。3 1m i 1 n 1 m i max 1 1...

演算法第三章作業

組員 高珞洋,何汶珊 之前在學習分治法的時候也有將其和動態規劃進行比較,動態規劃能夠解題的根本要求是原問題可以細分成子問題,且原問題的最優解必包含子問題的最優解。為了更明確上述條件,從而保證題目能夠運用動態規劃求解,通常需要兩步操作 明確問題具有最優子結構,並分解問題 找出遞推關係式 狀態轉移方程 ...