1084 矩陣取數問題 V2

2021-07-31 10:32:51 字數 986 閱讀 8358

1084 矩陣取數問題 v2

基準時間限制:2 秒 空間限制:131072 kb 分值: 80 

難度:5級演算法題

乙個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 <= a[i,j] <= 10000)

output

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

3 3

1 3 3

2 1 3

2 2 1

output示例

17
思路:多執行緒dp,dp[i][j][k],i代表步數,其實我覺得是做過的行與列的總和比較好,j代表第一遍走了i步,他在第幾列,k代表第二邊走了i步他在第幾列。。。根據步數還有列數可以推出行數,三元函式是為了讓他們不重複

#include #include #include #include using namespace std;

const int maxn = 205;

int dp[maxn*2][maxn][maxn], a[maxn][maxn];

int main()

}printf("%d\n", ans);

return 0;

}

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...

51Nod1084 矩陣取數問題 V2

題目看這裡 乙個經典的dp題,典型的錯誤思想就是做兩遍 我們考慮直接做,f i j x y 表示第一次取道i,j這個位置,第二次到了x,y這個位置 考慮這個i,j和x,y分別是從 轉移過來,就可以得到方程 f i j x y max f i 1 j x 1 y f i j 1 x 1 y f i 1...

51nod 1084 矩陣取數問題 V2

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