問題描述:有乙個m×n的矩陣,現要從左上角走到右下角,並且方向只能是向下或者向右,這個問題三種思路,一種是直接遞迴求解,另一種是for迴圈,還有一種是動態規劃現規定一條路徑的權值為走此路徑所經過的值的和。給定乙個矩陣,請找出權值最大的一條
路徑。example:
2 5 6 4
3 9 4 3
7 9 1 7
所找到的路徑為2->5->9->9->1->7,最大路徑和為33。
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...