矩陣取數問題 V2

2021-08-22 16:30:08 字數 1049 閱讀 2528

乙個m*n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,先從左上走到右下,再從右下走到左上。第1遍時只能向下和向右走,第2遍時只能向上和向左走。兩次如果經過同乙個格仔,則該格仔的獎勵只計算一次,求能夠獲得的最大價值。

例如:3 * 3的方格。

1 3 3

2 1 3

2 2 1

能夠獲得的最大價值為:17。1 -> 3 -> 3 -> 3 -> 1 -> 2 -> 2 -> 2 -> 1。其中起點和終點的獎勵只計算1次。

input

第1行:2個數m n,中間用空格分隔,為矩陣的大小。(2 <= m, n <= 200) 

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

output

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

sample input

3 3

1 3 3

2 1 3

2 2 1

sample output

17
#include#include#includeusing namespace std;

int map[550][550]=,dp[450][205][205]=;

int sum,m,n;

void dfs()

else

dp[step][i][j]=max(max(dp[step-1][i-1][j-1],dp[step-1][i][j]),max(dp[step-1][i-1][j],dp[step-1][i][j-1]))+map[i][step-i+1];

}} }

}int main()

} dp[1][1][1]=map[1][1];

dfs();

printf("%d\n",dp[n+m-1][n][n]);

return 0;

}

1084 矩陣取數問題 V2

1084 矩陣取數問題 v2 基準時間限制 2 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 乙個m n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,先從左上走到右下,再從右下走到左上。第1遍時只能向下和向右走,第2遍時只能向上和向左走。兩次如果經過同乙個格仔,則該...

51nod1078 矩陣取數問題 V2

乙個m n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,先從左上走到右下,再從右下走到左上。第1遍時只能向下和向右走,第2遍時只能向上和向左走。兩次如果經過同乙個格仔,則該格仔的獎勵只計算一次,求能夠獲得的最大價值。例如 3 3的方格。1 3 3 2 1 3 2 2 1 能夠獲得的最大...

51nod1084 矩陣取數問題 V2

o n4 o n3 媽呀為什麼跑這麼慢woc include include include includeusing namespace std define rep i,s,t for int i s i t i define dwn i,s,t for int i s i t i define...