51Nod 1083 矩陣取數問題(DP)

2021-07-16 17:08:57 字數 1299 閱讀 8232

1083 矩陣取數問題

基準時間限制:1 秒 空間限制:131072 kb 分值: 5 

難度:1級演算法題

乙個n*n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,從左上走到右下,只能向下向右走,求能夠獲得的最大價值。

例如:3 * 3的方格。

1 3 3

2 1 3

2 2 1

能夠獲得的最大價值為:11。

input

第1行:n,n為矩陣的大小。(2 <= n <= 500)

第2 - n + 1行:每行n個數,中間用空格隔開,對應格仔中獎勵的價值。(1 <= n[i] <= 10000)

output

輸出能夠獲得的最大價值。
input示例

3

1 3 3

2 1 3

2 2 1

output示例

11
題解:我們考慮一下,我們如何才能到(x,y)?前一步要麼到(x – 1, y), 要麼到(x, y – 1),因為有且只有這兩個位置能到(x,y),那麼怎樣才能得到f(x,y)?

有f(x, y) = max(f(x – 1, y) , f(x, y – 1) ) + a[x][y]

那我們看一下 f(1,1),顯然這是在起點,沒的選f(1,1) = a[1][1]。

那麼按照遞推式 f(1,2) = max(f(0, y) , f(1,1)) + a[1][2], 但是我們對f(0, y)沒有定義呀!考慮下實際意義,這表示要麼我們從上面到達(1,2)要麼從左面到達(1,2),可是上面沒有位置過來啊,這種說明沒的選。所以我們可以定義f(0, y) = -∞, 同理我們也可以定義f(x, 0)  = -∞。

那麼總結一下我們的遞推式

51Nod 1083 矩陣取數問題

乙個n n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,從左上走到右下,只能向下向右走,求能夠獲得的最大價值。例如 3 3的方格。1 3 3 2 1 3 2 2 1 能夠獲得的最大價值為 11。input 第1行 n,n為矩陣的大小。2 n 500 第2 n 1行 每行n個數,中間用空...

51nod 1083 矩陣取數問題

1083 矩陣取數問題 基準時間限制 1 秒 空間限制 131072 kb 分值 5難度 1級演算法題 乙個n n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,從左上走到右下,只能向下向右走,求能夠獲得的最大價值。例如 3 3的方格。1 3 3 2 1 3 2 2 1 能夠獲得的最大價...

51nod 1083 矩陣取數問題

基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 乙個n n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,從左上走到右下,只能向下向右走,求能夠獲得的最大價值。例如 3 3的方格。1 3 3 2 1 3 2 2 1 能夠獲得的最大價值為 11。input...