九度 1529:棋盘寻宝(递推DP)
题目描述:
现在有一个8*8的棋盘,上面放着64个价值不等的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0小于1000),一个人的初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,结束位置在棋盘的右下角,请设计一个算法使其能够获得最大价值的礼物。
思路
Leetcode 原题
dp[i][j] 表示 在第 (i,j) 个格子上能够获得的最大价值的礼物
状态转移方程为
dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + matrix[i][j]
这题不应该再贴上, 不过上次做括号匹配没构造出状态转移方程, 那题与此题思路是类似的
状态方程的求解, 有时递推关系比较明显, 尤其是图, 树, 矩阵什么的, 但有时递推关系就比较隐晦, 比如括号匹配, 铺地板(编程之美)他们类似是因为他们有一个共同点, 即通向当前状态有几种选择. 当是括号时, 可以选择左括号或右括号, 是地板, 可以选择横着放或竖着放 , 当是树或图时, 可以选择是由那个分支
代码
#include <iostream>
#include <stdio.h>
using namespace std; int matrix[][];
int dp[][];
int dodp(int n) {
for(int i = ; i < n; i ++) {
for(int j = ; j < n; j++) {
int left = , up = ;
dp[i][j] = matrix[i][j];
if(j- >= )
left = dp[i][j-];
if(i- >= )
up = dp[i-][j];
dp[i][j] += max(left, up);
}
} return dp[n-][n-];
}
int main() {
//freopen("testcase.txt", "r", stdin);
int n = ;
int first = ;
while(scanf("%d",&first) != EOF) {
matrix[][] = first;
for(int i = ; i < n; i ++)
scanf("%d", &matrix[][i]);
for(int i = ; i < n; i ++) {
for(int j = ; j < n; j ++) {
scanf("%d", &matrix[i][j]);
}
}
int res = dodp(n);
cout << res << endl;
} return ;
}
九度 1529:棋盘寻宝(递推DP)的更多相关文章
- 九度 1547 出入栈(递推DP)
题目描述: 给定一个初始为空的栈,和n个操作组成的操作序列,每个操作只可能是出栈或者入栈.要求在操作序列的执行过程中不会出现非法的操作,即不会在空栈时执行出栈操作,同时保证当操作序列完成后,栈恰好为一 ...
- 九度 1552 座位问题(递推DP)
题目描述: 计算机学院的男生和女生共n个人要坐成一排玩游戏,因为计算机的女生都非常害羞,男生又很主动,所以活动的组织者要求在任何时候,一个女生的左边或者右边至少有一个女生,即每个女生均不会只与男生相邻 ...
- 九度OJ 1081:递推数列 (递归,二分法)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6194 解决:864 题目描述: 给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q.这里n >= 2. 求第 ...
- Code Force 429B Working out【递推dp】
Summer is coming! It's time for Iahub and Iahubina to work out, as they both want to look hot at the ...
- 递推DP URAL 1167 Bicolored Horses
题目传送门 题意:k个马棚,n条马,黑马1, 白马0,每个马棚unhappy指数:黑马数*白马数,问最小的unhappy值是多少分析:dp[i][j] 表示第i个马棚放j只马的最小unhappy值,状 ...
- 递推DP URAL 1017 Staircases
题目传送门 /* 题意:给n块砖头,问能组成多少个楼梯,楼梯至少两层,且每层至少一块砖头,层与层之间数目不能相等! 递推DP:dp[i][j] 表示总共i块砖头,最后一列的砖头数是j块的方案数 状态转 ...
- 递推DP URAL 1260 Nudnik Photographer
题目传送门 /* 递推DP: dp[i] 表示放i的方案数,最后累加前n-2的数字的方案数 */ #include <cstdio> #include <algorithm> ...
- 递推DP URAL 1353 Milliard Vasya's Function
题目传送门 /* 题意:1~1e9的数字里,各个位数数字相加和为s的个数 递推DP:dp[i][j] 表示i位数字,当前数字和为j的个数 状态转移方程:dp[i][j] += dp[i-1][j-k] ...
- 递推DP URAL 1119 Metro
题目传送门 /* 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 递推DP:仿照JayYe,处理的很巧妙,学习:) 好 ...
随机推荐
- Android开发日记(二)
HashMap<String, Object> map;定义一个HashMap用来传递字符 TextView textView_JobTitle=(TextView)findViewByI ...
- jsp版ueditor图片在线管理返回绝对路径
引用:http://zhengyunfei.iteye.com/blog/2149979 如果你有富文本编辑器的功能需要开发,我推荐你用百度的ueditor.本文将与你分享jsp版ueditor开发中 ...
- JavaScript高级 面向对象(6)--值类型与引用类型的存储特征
说明(2017.3.31): 1. 画图: var num = 123; var num2 = num; 值类型赋值的存储特点:将变量num内的数据全部拷贝一份,存储给新的变量num2,内存中有2个数 ...
- python学习笔记(22)--漫画生成html最终版
说明(2017.3.14): 1. 在主文件夹生成一个main.html作为目录 2. 在每个子文件夹生成一个index.html作为看图网页 3. 通过python批量生成html网页,js配合进行 ...
- QT4.8.5 QComboBox 增加选择菜单记录
QT4.8.5 QComboBox 增加选择菜单记录 因为软件需要测试多个UART ,多个LAN,当要测试多个同样功能的时候就可以使用QComboBox类实现一个菜单选择功能. 步骤如下: 1. 在U ...
- java clone对象
本文转载至 http://blog.csdn.net/shootyou/article/details/3945221 现在Clone已经不是一个新鲜词语了,伴随着“多莉”的产生这个词语确实很“火”过 ...
- HAProxy+Varnish+LNMP实现高可用负载均衡动静分离集群部署
HAProxy高可用负载均衡集群部署 基本信息: 系统平台:VMware WorkStation 系统版本: CentOS Linux release 7.2.1511 (Core) 内核版本: 3. ...
- hdu2896 病毒侵袭 AC自动机入门题 N(N <= 500)个长度不大于200的模式串(保证所有的模式串都不相同), M(M <= 1000)个长度不大于10000的待匹配串,问待匹配串中有哪几个模式串,
/** 题目:hdu2896 病毒侵袭 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2896 题意:N(N <= 500)个长度不大于200的模式串 ...
- MongoDB(四):MongoDB连接和创建数据库
在连接MongoDB前确保启动MongoDB服务,只需要在MongoDB安装目录的bin目录下执行mongo.exe即可. 执行启动操作后,mongodb在输出一些必要信息后不会输出任何信息,之后就等 ...
- 关于Javascript判断变量是否为空
如何判断Javascript对象是否存在 原文网址:http://www.ruanyifeng.com/blog/2011/05/how_to_judge_the_existence_of_a_glo ...