0

有一個N * N整數矩陣Arr[N][N]。從行r和列c,我們可以去以下三種指數:直到第N-1行的任何路徑的最大總和

Arr[ r+1 ][ c-1 ] (valid only if c-1>=0)

II。 Arr[ r+1 ][ c ]

三, Arr[ r+1 ][ c+1 ] (valid only if c+1<=N-1)

所以,如果我們從第0行的任何列索引開始,到第N-1行的任何路徑的最大總和是多少。

+0

你卡在哪裏? (如果我們不知道你已經理解了什麼,我們冒着重複你已經知道的東西的風險,並省略你還不知道的東西) – meriton 2014-11-01 12:46:05

回答

0

就可以解決這個問題是這樣的:

令M是N×N的整數矩陣A數量最多定義一個新的N * N矩陣B,其中b[i,j] = M - a[i,j] + 1。 B只包含正整數。遍歷方法對應於矩陣細胞上的某個明確定義的方向圖。現在在這個圖上使用 dijkstra algorithm,其中上面每個節點與三個節點(或者邊上的兩個節點)節點的距離僅等於數字b[i,j]。 dijkstra算法將爲您提供該圖中的'最短'路徑,其對應於矩陣A中具有最大總和的路徑。

爲了明白爲什麼用這種方式可以解決問題,假設有x個序列s1,s2,s3,...,sx等長N.一些序列si將有最大的和。如果我們取序列t1,t2,...,tx使得t1k = -s1k,那麼最大和s是最小的和t。如果我們爲每個序列中的每個值添加一個常數,那麼具有最大和的t序列不會改變,因爲這些序列中的每一個都是相等長的。