poj 1088 滑雪(区间dp+记忆化搜索)
题目链接:http://poj.org/problem?id=1088
思路分析:
1>状态定义:状态dp[i][j]表示在位置map[i][j]可以滑雪的最长区域长度;
2>状态转移方程:由于由位置[i, j]只能向四个方向移动,所以子问题最多有四个;所以dp[i][j]为其邻域可以滑雪的最大区域长度加上从该位置滑到邻域的长度,即1;
代码如下:
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std; const int MAX_N = + ;
int map[MAX_N][MAX_N];
int dp[MAX_N][MAX_N];
int dir[][] = {, -, , , -, , , };
int row, column; int Dp(int i, int j)
{
int res = ; if (dp[i][j])
return dp[i][j];
for (int k = ; k < ; ++k)
{
int n_i = i + dir[k][];
int n_j = j + dir[k][]; if ((n_i >= && n_i < row)
&& (n_j >= && n_j < column)
&& map[n_i][n_j] < map[i][j])
res = max(res, Dp(n_i, n_j));
}
return dp[i][j] = res + ;
} int main()
{
int ans; while (scanf("%d %d", &row, &column) != EOF)
{
ans = ;
for (int i = ; i < row; ++ i)
for (int j = ; j < column; ++ j)
scanf("%d", &map[i][j]); memset(dp, , sizeof(dp));
for (int i = ; i < row; ++i)
for (int j = ; j < column; ++j)
ans = max(ans, Dp(i, j));
printf("%d\n", ans);
} return ;
}
poj 1088 滑雪(区间dp+记忆化搜索)的更多相关文章
- (区间dp + 记忆化搜索)Treats for the Cows (POJ 3186)
http://poj.org/problem?id=3186 Description FJ has purchased N (1 <= N <= 2000) yummy treats ...
- poj 1088 动态规划+dfs(记忆化搜索)
滑雪 Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Description Mi ...
- ACM学习历程—POJ1088 滑雪(dp && 记忆化搜索)
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...
- UVA 10003 Cutting Sticks 区间DP+记忆化搜索
UVA 10003 Cutting Sticks+区间DP 纵有疾风起 题目大意 有一个长为L的木棍,木棍中间有n个切点.每次切割的费用为当前木棍的长度.求切割木棍的最小费用 输入输出 第一行是木棍的 ...
- uva 10891 区间dp+记忆化搜索
https://vjudge.net/problem/UVA-10891 给定一个序列x,A和B依次取数,规则是每次只能从头或者尾部取走若干个数,A和B采取的策略使得自己取出的数尽量和最大,A是先手, ...
- HDU 2517 / POJ 1191 棋盘分割 区间DP / 记忆化搜索
题目链接: 黑书 P116 HDU 2157 棋盘分割 POJ 1191 棋盘分割 分析: 枚举所有可能的切割方法. 但如果用递归的方法要加上记忆搜索, 不能会超时... 代码: #include& ...
- POJ1088滑雪(dp+记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 86411 Accepted: 32318 Description ...
- loj 1031(区间dp+记忆化搜索)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1031 思路:dp[i][j]表示从区间i-j中能取得的最大值,然后就是枚举分割点了. ...
- BZOJ1055[HAOI2008]玩具取名 【区间dp + 记忆化搜索】
题目 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后 他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够 ...
随机推荐
- 用C++写一个简单的订阅者
打开一个终端,进入到beginner_tutorials包下面: cd ~/catkin_ws/src/beginner_tutorials 建立文件src/listener.cpp: vim src ...
- 搭建单节点Hadoop应用环境
虚拟机: VirtualBox 5 Server操作系统: Ubuntu Server 14.04.3 LTS 如果对虚拟机空间和性能不做考虑, 且不习惯用Linux命令, 你也可以使用Ubuntu ...
- jaspersoft 5.6.0 相关问题
<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true" ...
- HBase shell 操作命令记录
创建表:create 'tablename','column cluseter:column1,column2...columnn','column cluster:column1,column2.. ...
- poj 3740 Easy Finding 精确匹配
题目链接 dlx的第一题, 真是坎坷..... #include <iostream> #include <vector> #include <cstdio> #i ...
- java——%
%; //结果为1 %; //结果为-1 ; //结果为1.2000000000000002
- MYSQL 的数据读取方式
例子: create table T(X bit(8)); insert into T (X) values(b'11111111'); select X from T; 这个时候会发现这个X 是乱码 ...
- mysqldump 利用rr隔离实现一致性备份
mysqldump -p -S /data/mysqldata1/sock/mysql.sock --single-transaction --master-data=2 --database db1 ...
- [poj 3159]Candies[差分约束详解][朴素的考虑法]
题意 编号为 1..N 的人, 每人有一个数; 需要满足 dj - di <= c 求1号的数与N号的数的最大差值.(略坑: 1 一定要比 N 大的...difference...不是" ...
- 微信jsapi支付的坑
1.显示 redirect_uri 参数错误 因为手机支付是需要微信授权的,所以检查配置授权域名地址是否正确填写(登陆微信公众平台,地址:https://mp.weixin.qq.com/cgi-b ...