51nod 1083 矩阵取数问题

来源:互联网 发布:java变量初始化顺序 编辑:程序博客网 时间:2024/06/05 00:16

51nod 1083 矩阵取数问题

简单的动规,dp[i][j] = max(dp[i-1][j],dp[j-1][i])+p[i][j];
代表取到i,j时最优路径值的和。

#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <queue>#include <map>using namespace std;#define LL long long#define INF 0x3f3f3f3f#define PI acos(-1.0)#define E 2.71828#define MOD 1000000007#define N 510int p[N][N];int dp[N][N];int main(){    int n;    scanf("%d",&n);    for(int i = 0; i < n; i++)        for(int j = 0; j < n; j++)            scanf("%d",&p[i][j]);    dp[0][0] = p[0][0];    for(int i = 1; i < n; i++)    {        dp[0][i] = dp[0][i-1]+p[0][i];        dp[i][0] = dp[i-1][0]+p[i][0];    }    for(int i = 1; i < n; i++)        for(int j = 1; j < n; j++)            dp[i][j] = max(dp[i-1][j],dp[i][j-1])+p[i][j];    printf("%d\n",dp[n-1][n-1]);    return 0;}
0 0
原创粉丝点击