(51nod)1083 - 矩阵取数问题

    xiaoxiao2021-03-25  69

    1083 矩阵取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5  难度:1级算法题  收藏  关注 一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下向右走,求能够获得的最大价值。 例如:3 * 3的方格。 1 3 3 2 1 3 2 2 1 能够获得的最大价值为:11。 Input 第1行:N,N为矩阵的大小。(2 <= N <= 500) 第2 - N + 1行:每行N个数,中间用空格隔开,对应格子中奖励的价值。(1 <= N[i] <= 10000) Output 输出能够获得的最大价值。 Input示例 3 1 3 3 2 1 3 2 2 1 Output示例 11 相关问题 矩阵取数问题 V2  80   矩阵取数问题  V3  320 李陶冶  (题目提供者)

    从终点往起点逐个DP就好了,局部最优解变成全局最优解。

    #include <cstdio> #include <algorithm> using namespace std; int main() { int a[510][510],i,j,n; scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=n;i>=0;i--) { for(j=n;j>=0;j--) { if(i==n||j==n){a[i][j]=0;continue;} a[i][j]+=max(a[i][j+1],a[i+1][j]); } } printf("%d\n",a[0][0]); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-36396.html

    最新回复(0)