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

来源:互联网 发布:男人中式服装品牌知乎 编辑:程序博客网 时间:2024/05/22 15:57

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)

输出

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

样例输入

31 3 32 1 32 2 1

样例输出

11

#include <iostream>#include<stdio.h>#include <string.h>#define N 550using namespace std;int d[N][N],mp[N][N];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[n][n]<<endl;}
一道动态规划的入门问题,由于C++包含了max函数,所以选用C++项目。

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

原创粉丝点击