矩陣的最大路徑和問題

2021-10-11 02:25:13 字數 1319 閱讀 3310

問題描述:有乙個m×n的矩陣,現要從左上角走到右下角,並且方向只能是向下或者向右,

現規定一條路徑的權值為走此路徑所經過的值的和。給定乙個矩陣,請找出權值最大的一條

路徑。example:

2 5 6 4

3 9 4 3

7 9 1 7

所找到的路徑為2->5->9->9->1->7,最大路徑和為33。

這個問題三種思路,一種是直接遞迴求解,另一種是for迴圈,還有一種是動態規劃

1、遞迴求解

想計算到達右下角的最大路徑,就要先算出到達上面的點的最大路徑和左邊的點的最大路徑,然後去較大值加上7(上面「問題描述」中矩陣的右下角的值為7)

而在求上面點的最大路徑時又要先求出到達1或3的最大路徑 …依次類推直到左上角的值。

#include

#include

#define m 10

int map[m]

[m];

intscan_f

(int m,

int n)}}

intmax

(int num1,

int num2)

intfind

(int m,

int n)

intmain()

2、for迴圈

example:矩陣d為輸入矩陣

矩陣p為走到每一格的最大和

再將其他格置為每一格的最大和:實現在下面**max_path()函式的兩重for迴圈中。

#include

int p[20]

[20],d[20]

[20];

intmax

(int a,

int b)

intmax_path

(int m,

int n)

for(

int i =

1; i < n; i++

)for

(int i =

1; i < m; i++)}

return p[m-1]

[n-1];

}int

main()

三、動態規劃

未完待續。。。

演算法 求最大路徑和

題目 給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。舉例 1,2,3 思路 二叉樹只能從根節點開始,深度或廣度遍歷。深度遍歷 1,可以遞迴遍歷到最左節點,然後一層一層的返回最大求和項。直到頂層。2,右...

windows最大路徑長度

在windows api中,路徑的最大長度為max path,max path被定義為260。乙個路徑的結構如下所示 碟符 冒號 反斜槓 被反斜槓所劃分的若干部分 nul 0 例如 d 256 chars nul.note windows api中的函式將 轉換成 使之成為nt風格名字的一部分。許多...

練習之《求最大路徑》

題目描述 已知乙個斜三角 22 32 14 77 45 12 34 37 23 44 23 15 34 54 88 從最左上角元素開始往右或往右下走,請問順著哪條路所經過的值的總和最大,如可以有路線 22,32,34,23,54 22,12,44,34,88等等 請求出滿足值總和最大的那條線路。vi...