乙個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 3sample output1 3 3
2 1 3
2 2 1
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...