您的位置:首页 > 其它

OJ.3158: 这还是一道简单题

2017-06-17 11:11 204 查看


3158: 这还是一道简单题

时间限制: 1 Sec  内存限制: 128 MB
提交: 27  解决: 11

[提交][状态][讨论版]


题目描述

一个 N*N 矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下向右走,求能够获得的最大价值。

例如:3 * 3 的方格。

    1 3 3
    2 1 3
    2 2 1

能够获得的最大价值为:11。


输入

第1行:N,N为矩阵的大小。(2 <= N <= 500)

第 2 - N + 1 行:每行 N 个数,中间用空格隔开,对应格子中奖励的价值。(1 <= N[i] <= 10000)


输出

输出能够获得的最大价值。


样例输入

3
1 3 3
2 1 3
2 2 1


样例输出

11


#include <iostream>
#include<stdio.h>
#include <string.h>
#define N 550
using namespace std;

int d

,mp

;

int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&mp[i][j]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
d[i][j]=max(d[i-1][j],d[i][j-1])+mp[i][j];
cout<<d

<<endl;
}
一道动态规划的入门问题,由于C++包含了max函数,所以选用C++项目。


动态规划还是得多看,多练习才行。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: