博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51nod 1083 矩阵取数问题【动态规划】
阅读量:5345 次
发布时间:2019-06-15

本文共 725 字,大约阅读时间需要 2 分钟。

一个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

思路:动态规划题最重要的就是要推导出递推式,首先设立dp数组,dp[i][j]表示坐标(i,j)处的最大值,由于只能向右或者向下,所以dp[i][j]的值就为dp[i][j],dp[i-1][j]+m[i][j]和dp[i][j-1]+m[i][j] 中最大的。

另外要注意边界的处理,看代码大家应该可以理解,

#include
#include
using namespace std;//const int mod=1e9+7;const int maxn=505;int dp[maxn][maxn],m[maxn][maxn];int maxthree(int a,int b,int c){ a=a>b?a:b; a=a>c?a:c; return a;}int main(){ int n; scanf("%d",&n); for(int i=0;i

 

转载于:https://www.cnblogs.com/aerer/p/9930912.html

你可能感兴趣的文章
制作U盘启动CDLinux 分类: 生活百科 ...
查看>>
strcpy函数里的小九九
查看>>
搭建ssm过程中遇到的问题集
查看>>
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>
Flutter学习笔记(一)
查看>>
iOS10 国行iPhone联网权限问题处理
查看>>
洛谷 P1991 无线通讯网
查看>>
[HIHO1184]连通性二·边的双连通分量(双连通分量)
查看>>
Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf 【动态规划】0-1背包
查看>>
SparkStreaming 源码分析
查看>>
【算法】—— 随机音乐的播放算法
查看>>
mysql asyn 示例
查看>>
DataGrid 点击 获取 行 ID
查看>>
git 使用
查看>>
边框圆角方法
查看>>
asp.net WebApi自定义权限验证消息返回
查看>>
php中eval函数的危害与正确禁用方法
查看>>
20172315 2017-2018-2 《程序设计与数据结构》第十一周学习总结
查看>>
MySQL添加、修改、撤销用户数据库操作权限的一些记录
查看>>