演算法第三章作業

2022-08-23 08:33:09 字數 645 閱讀 1358

我認為動態規劃的特點是在深搜的基礎上優化,也就是對相同的子問題上不再進行重複的求解,求解過的子問題可以直接翻記錄得到答案。

1)單調遞增最長子序列

遞迴方程:dis[i] = max(dis[i], dis[j]+1)     (1 <= i, 0 <= j < i)

**展示:

1

int miess(int *a, int

n) 15}16

if (dis[i] >max_len) 20}

21delete dis;

22return

max_len;

23 }

2)租遊艇問題

遞迴方程:a[1][i] = max(a[1][j], a[j][i]+a[1][i])     (2 <= i <= n, 1 <= j < i)

**展示:

1

int rent_yachts(int a[200][201], int

n) 8}9

return a[1

][n];

10 }

我和小夥伴江元發一起對很多問題都進過**,在思想的碰撞中我們收穫良多,也希望能保持這樣良好的狀態繼續共同進步!!

演算法第三章作業

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

演算法第三章作業

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

演算法第三章作業

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