poj 1163 動態規劃

2021-09-01 05:39:29 字數 739 閱讀 3333

這道題目並不能直接使用遞迴,因為

7(1)

7(1)         7(1)   

7(1)      7(2)         7(1)

7(1)       7(3)         7(3)          7(1)

7(1)      7(4)         7(6)        7(4)         7(1)

假設題目中的資料是這樣子的,小括號內代表著每個數被遞迴呼叫的次數。

這個三角實際上是乙個楊輝三角,它的和為  2^n -2  ,題目中的層數大小是100以內,那最大的話就要算到  2^100 ,

這已經不是超時的問題了,汗顏。

那怎麼辦呢?我們只需要將每次用到的值它的最大值存起來,等著返回的時候,讓上層的遞迴直接使用就可以了。

這樣的話複雜度就是等差數列,就是n(n-1)/2,所以這次就不用等到宇宙毀滅了。

#include #include #define max 101

using namespace std;

int n,d[max][max];

int maxsum[max][max];

int maxsum(int i,int j)

if (i==n)

else

return maxsum[i][j];

}int main()

} cout

}

POJ 1163 動態規劃

題目演算法 動態規劃 可參考我的部落格 遞迴邊界 當遍歷到最後一行時 狀態轉移方程 sum i j max maxsum i 1,j maxsum i 1,j 1 num i j 遞迴的思路就是從上到下一直遍歷,直到到達邊界為止。c語言的ac 如下 peking university acm 116...

poj 1163 動態規劃

這道題目並不能直接使用遞迴,因為 7 1 7 1 7 1 7 1 7 2 7 1 7 1 7 3 7 3 7 1 7 1 7 4 7 6 7 4 7 1 假設題目中的資料是這樣子的,小括號內代表著每個數被遞迴呼叫的次數。這個三角實際上是乙個楊輝三角,它的和為 2 n 2 題目中的層數大小是100以內...

poj1163 數字三角形 動態規劃

1.記憶遞迴型 自頂向下 d i j 來存數字 典型的遞迴問題 d r,j 出發,下一步只能走d r 1,j 或者d r 1,j 1 故對於n行的三角形 if r n maxsum r,j d r,j else maxsum r,j max maxsum r 1,j maxsum r 1,j 1 d...