51Nod 1083 矩阵取数问题 | 动态规划
#include "bits/stdc++.h" using namespace std; #define LL long long #define INF 0x3f3f3f3f3f #define PI acos(-1) #define N 510 #define MOD 10 using namespace std; int arr[N+1][N+1],dp[N+1][N+1]; int main() { int n; while(~scanf("%d",&n)){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ scanf("%d",&arr[i][j]); } } for(int i=0;i<=n;i++) dp[0][i]=-INF,dp[i][0]=-INF; dp[1][1]=arr[1][1]; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(i==1&&j==1) continue; dp[i][j]=max(dp[i-1][j],dp[i][j-1])+arr[i][j]; } } printf("%d\n",dp[n][n]); } return 0; }