poj 1088 动态规划+dfs(记忆化搜索)
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Description
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。
Input
Output
Sample Input
5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
Sample Output
25 代码如下:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std; int R,C;
long dp[][];
int a[][]; long dfs(int i,int j)
{
//为防止下标+1或-1时数组越界,故dp数组从1开始存放数据
if(dp[i+][j+]!=)
return dp[i+][j+]; dp[i+][j+] = ; if(a[i-][j]<a[i][j]&&i!=) //向上
dp[i+][j+] = max(dp[i+][j+],dfs(i-,j)+);
if(a[i][j+]<a[i][j]&&j!=C-) //向右
dp[i+][j+] = max(dp[i+][j+],dfs(i,j+)+);
if(a[i+][j]<a[i][j]&&i!=R-) //向下
dp[i+][j+] = max(dp[i+][j+],dfs(i+,j)+);
if(a[i][j-]<a[i][j]&&j!=) //向左
dp[i+][j+] = max(dp[i+][j+],dfs(i,j-)+); return dp[i+][j+];
} int main()
{
while(cin>>R>>C)
{
for(int i = ; i < R; i++)
for(int j = ; j < C; j++)
{
cin>>a[i][j];
}
memset(dp,sizeof(dp),);
int ans = -;
for(int i = ; i < R; i++)
for(int j = ; j < C; j++)
{
dfs(i,j); //逐个搜索一遍,相当于在dfs中记忆化搜索
} //从dp数组中找最大的就是答案
for(int i = ; i <= R; i++)
for(int j = ; j <= C; j++)
{
if(dp[i][j]>ans)
ans=dp[i][j];
} cout<<ans<<endl;
}
return ;
}
poj 1088 动态规划+dfs(记忆化搜索)的更多相关文章
- POJ 1088 滑雪 DFS 记忆化搜索
http://poj.org/problem?id=1088 校运会放假继续来水一发^ ^ 不过又要各种复习,功课拉下了许多 QAQ. 还有呀,就是昨天被一个学姐教育了一番,太感谢了,嘻嘻^ ^ 好了 ...
- POJ 1088 滑雪(记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 92384 Accepted: 34948 Description ...
- POJ 1088 滑雪【记忆化搜索】
题意:给出一个二维矩阵,要求从其中的一点出发,并且当前点的值总是比下一点的值大,求最长路径 记忆化搜索,首先将d数组初始化为0,该点能够到达的路径长度保存在d数组中,同时把因为路径是非负的,所以如果已 ...
- poj 1088 滑雪_记忆化搜索
题意:略 直接用记忆化搜索就行了 #include<cstdio> #include<iostream> using namespace std; int n,m; int m ...
- POJ 1088 滑雪 【记忆化搜索经典】
题目链接:http://poj.org/problem?id=1088 滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...
- 不要62 hdu 2089 dfs记忆化搜索
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意: 给你两个数作为一个闭区间的端点,求出该区间中不包含数字4和62的数的个数 思路: 数位dp中 ...
- dfs+记忆化搜索,求任意两点之间的最长路径
C.Coolest Ski Route 题意:n个点,m条边组成的有向图,求任意两点之间的最长路径 dfs记忆化搜索 #include<iostream> #include<stri ...
- POJ 1191 棋盘分割 【DFS记忆化搜索经典】
题目传送门:http://poj.org/problem?id=1191 棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submission ...
- POJ 2704 Pascal's Travels 【DFS记忆化搜索】
题目传送门:http://poj.org/problem?id=2704 Pascal's Travels Time Limit: 1000MS Memory Limit: 65536K Tota ...
随机推荐
- ECharts API
From:http://echarts.baidu.com/echarts2/doc/doc.html 简介 名词解析 图表类型 line bar scatter k pie radar chord ...
- Find Median from Data Stream 解答
Question Median is the middle value in an ordered integer list. If the size of the list is even, the ...
- PHP设计模式笔记一:准备工作 -- Rango韩老师 http://www.imooc.com/learn/236
一.编程字体选择 1.选择等宽字体 包括Courier New ,Consolas,Source Code Pro(推荐) 2.环境搭建(建议easyPHP) 二.开发符合PSR规范的基础框架 PSR ...
- SqlDependency不起作用
今天使用SqlDependency,结果不起作用,失效,不管数据库怎么修改,这边都没反应,OnChange事件总是不执行,很奇怪.我打开msdn里的例子,代码复制出来,结果没问题,能执行,那剩下来的问 ...
- 訪问远程WAMP 下phpmyadmin
WAMP环境是一个非常优秀的webservice集成环境,它集成的phpmyadmin也是一款非常优秀的数据库訪问软件.wamp默认安装下,phpmyadmin工具仅仅能本地用,在站点开发中,数据库都 ...
- 十一招解决:系统IE部分网页打不开怎么办(转载)
网页打不开这问题,却实非常令人头痛,问过非常多人,都说不出真正的理由和解决方法.以下是在网络上面搜集的一些针对“网页打不开怎么办”解决方法,共十一条,希望可以对大家有帮助. Application M ...
- SQLLoader8(加载的数据中有换行符处理方法)
SQLLDR加载的数据中有换行符处理方法1.创建测试表: CREATE TABLE MANAGER( MGRNO NUMBER, MNAME ), JOB ), REMARK ) ); 2.创建控制文 ...
- Chrome 开发者工具详解(2):Network 面板
面板上包含了Elements面板.Console面板.Sources面板.Network面板. Timeline面板.Profiles面板.Application面板.Security面板.Audit ...
- BOM 窗体相关属性以及页面可见区域的获取方式
1 在IE Safari Oper Chrome 都提供了screenLeft和screenTop属性: screenLeft : 相对于屏幕左边的距离 screenTop : 相对于屏幕上边的距离 ...
- UI开发学习中遇到的问题汇总
1.给UIView设置圆角,边框,阴影绘制,需要使用layer 1)设置圆角cornerView.layer.cornerRadius = 20; //设置试图圆角的大小cornerView.laye ...