九度 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,处理的很巧妙,学习:) 好 ...
随机推荐
- html5 的localstorage
/** * 向localStorage中设置数据 * @param key 字符串 * @param value 数组 */ function SetDataIntoLocalStorage(key, ...
- Makefile学习之路——4
变量的类别有递归扩展变量和简单扩展变量.只用一个“=”符号定义的变量被称为递归扩展变量.通过下面例子观察递归扩展变量的特点. .PHONY: all foo=$(bar) bar=$(ugh) ugh ...
- C#类的修饰符
## C#类的修饰符------------------------- public 任何地方可以调用- internal 同一应用程序集内使用- partial 部分类,一个类分成几部分写在不同文件 ...
- MFC中Carray的使用
CArray 需要包含的头文件 <afxtempl.h> CArray类支持与C arrays相似的数组,但是必要时可以动态压缩并扩展.数组索引从0开始.可以决定是固定数组上界还是允许当添 ...
- [uboot]What is MLO file?
转自:https://coherentmusings.wordpress.com/2012/09/05/what-is-mlo-file/ I have had the Beagle-xM for a ...
- 在linux上安装redmine
Redmine 是一个开源的.基于Web的项目管理和缺陷跟踪工具.它用日历和甘特图辅助项目及进度可视化显示.同时它又支持多项目管理.Redmine是一个自由开放 源码软件解决方案,它提供集成的项目管理 ...
- TP5 display()
tp3.x $this->display(); tp5 return $this->fetch();
- TCP协议的问题
Server端接收到Client端信息后不会返回给Client端 // TCPEchoServer.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h&quo ...
- vlc player验证交换机igmp
使用vlc media player发送多播数据,验证交换机igmp的设置是否成功. 链接 http://peakdrive.com/?p=440 http://www.dasblinkenlicht ...
- 第三百一十八节,Django框架,信号
第三百一十八节,Django框架,信号 Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 也就是当程序有指定动作时, ...