1. 動態規劃是一種能夠減少重複運算的一種演算法,比較適合原問題能依賴於子問題解得,而子問題也能夠依賴於子子問題解得而出的問題。
其次,動態規劃更適合於資料量較多的時候的一種演算法,當資料量沒有到達一定規模的時候,動態規劃演算法不能夠體現出足夠的優勢。
(如對於揹包問題的貪心演算法和動態規劃法)
2.(1)單調遞增最長子序列:
temp[ i ] = temp[ i-1 ] + 1 , ( arr[ i ] > arr[ i-1 ] )
= 1 , ( arr[ i ] <= arr[ i-1 ] )
(2)租用遊艇問題:
arr[ i ][ j ] = min( arr[ i ][ j ], (arr[ i ][ k ] + arr[ k ][ j ]) );
因為遊艇從起點1到達終點n的過程中,並不是每乙個點都需要經過,所以,需要利用迴圈來比較每乙個中間點k的費用。
3.結對程式設計目前來講比較好,能夠促使兩個人一起解決難題。
演算法第三章作業
我覺得動態規劃是一種分治法的偽高階型,它將乙個大問題可以分成若干個小問題後,解決子問題,然後將子問題的解插入到乙個表中,用乙個表來記錄所有的已經得到答案的子問題的解,後面就可以發現,無論子問題的解是否被用到,其都在表中,接著求問題便可以節省大量的時間。3 1m i 1 n 1 m i max 1 1...
演算法第三章作業
組員 高珞洋,何汶珊 之前在學習分治法的時候也有將其和動態規劃進行比較,動態規劃能夠解題的根本要求是原問題可以細分成子問題,且原問題的最優解必包含子問題的最優解。為了更明確上述條件,從而保證題目能夠運用動態規劃求解,通常需要兩步操作 明確問題具有最優子結構,並分解問題 找出遞推關係式 狀態轉移方程 ...
演算法第三章作業
1.1 根據最優子結構性質,列出遞迴方程式。遞迴方程 len i max 0 j i ac 1 include2 using namespace std 3int dp int nums int n 13 14 15int max 1 16 for int i 0 i 20 21return max...