滑雪(dfs+dp)
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 113903 | Accepted: 43478 |
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 show the codes:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int maxn = ;
int n,m;
int dp[maxn][maxn];
int maze[maxn][maxn];
int dir[][] = {{,},{-,},{,-},{,}}; // 二维方向数组的一种广义表形式表示方法! bool judge(int x,int y)
{
if(x < || x > n || y < || y > m)
return false;
return true;
} int dfs(int i,int j)
{
if(dp[i][j])
return dp[i][j];
int ret = ;
for(int k = ; k < ; k++)
{
int xx = i + dir[k][];
int yy = j + dir[k][];
if(judge(xx,yy) && maze[i][j] > maze[xx][yy])
ret = max(dfs(xx,yy)+, ret);
}
dp[i][j] = ret;
return ret;
} int main()
{
while(scanf("%d %d", &n, &m) != EOF)
{
memset(dp,,sizeof(dp));
memset(maze,,sizeof(maze));
for(int i = ; i <= n; i++)
for(int j = ; j <= m; j++)
scanf("%d", &maze[i][j]);
int ans = ;
for(int i = ; i <= n; i++)
for(int j = ; j <= m; j++)
ans = max(dfs(i,j), ans);
printf("%d\n", ans);
}
return ;
}
细节讨论:
1.关于二维方向数组的表现形式:
int dir[4][2]={{1,0},{-1,0},(0,1},{0,-1}}; 2.深度优先搜索(Depth-First-Search,简称DFS)。这是一种常见的用于遍历或搜索树或者图的算法。
基本实现思想:
(1)访问(visit)顶点v;
(2)从v的未被访问的邻接点中选取一个顶点w,从w出发进行深度优先遍历;
(3)重复上述两步,直至图中所有和v有路径相通的顶点都被访问到。
3.强烈推荐(安利)优秀博文以了解dfs:
https://blog.csdn.net/liangzhaoyang1/article/details/51415719
十分感谢此博文以解决滑雪此题:
https://blog.csdn.net/chen_ze_hua/article/details/51259888
---------------------------------------------------------------人的梦想,是不会终止的!
滑雪(dfs+dp)的更多相关文章
- dfs+dp思想的结合------hdu1078
首先是题目的意思: 从一个正方形的0,0点开始走,只能横着走,竖着走,最多走k步,下一个点的数一定要比当前这个点的值大,每走一步,就加上下一个点的数据,问数据最大能有多少. 首先遇到这种题目,走来走去 ...
- HDU1978How Many Ways 记忆化dfs+dp
/*记忆化dfs+dp dp[i][j]代表达到这个点的所有路的条数,那么所有到达终点的路的总数就是这dp[1][1]加上所有他所能到达的点的 所有路的总数 */ #include<stdio. ...
- 记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof
题目传送门 /* 记忆化搜索(DFS+DP):dp[x][y] 表示x个蛋,在y楼扔后所需要的实验次数 ans = min (ans, max (dp[x][y-i], dp[x-1][i-1]) + ...
- 记忆化搜索(DFS+DP) URAL 1501 Sense of Beauty
题目传送门 /* 题意:给了两堆牌,每次从首部取出一张牌,按颜色分配到两个新堆,分配过程两新堆的总数差不大于1 记忆化搜索(DFS+DP):我们思考如果我们将连续的两个操作看成一个集体操作,那么这个操 ...
- 【cf1111】C. Creative Snap (dfs+dp)
传送门 简单的dfs+dp即可解决.根本不用动态开点 /* * Author: heyuhhh * Created Time: 2019/11/13 10:12:42 */ #include < ...
- 百练1088:滑雪 【DP】+【DFS】
总Time Limit: 1000ms Memory Limit: 65536kB Description Michael喜欢滑雪百这并不奇怪, 由于滑雪的确非常刺激.但是为了获得速度,滑的区域必须向 ...
- 滑雪 矩阵中的最长上升路径 /// 记忆化DFS || DP oj22919
大致题意: Description 难怪Michael喜欢滑雪,因为滑雪确实很刺激.为了获得加速度,滑雪道必须向下倾斜,而且当滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道在一 ...
- POJ1088滑雪(dp+记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 86411 Accepted: 32318 Description ...
- P1434 [SHOI2002]滑雪 dfs
题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道在一个区域中最长 ...
随机推荐
- CCS 5.5下载地址http://www.dianyuan.com/bbs/1492792.html
http://www.dianyuan.com/bbs/1492792.html https://pan.baidu.com/s/1eQtIRK2?errno=0&errmsg=Auth%20 ...
- JAVA鼠标监听器
package howework_07; public class Example9_10 { public static void main(String args[]) { WindowMouse ...
- Django models 关联(一对多,多对多,一对一)
参考:https://blog.csdn.net/houyanhua1/article/details/84953388
- 安卓android eclipse运行提示no compatible targets were found
在eclipse中开发安卓应用,运行项目时,右击项目名称---Run As---Android Application时, 系统提示"No compatible targets were f ...
- 自定义结构体 Map
struct Hashmap{ ,maxe=; ],nxt[maxe+],w[maxe+]; ]; ;;} void Add(int x,int y){son[++E]=y;nxt[E]=lnk[x] ...
- Python的字典、列表合并
字典合并: 在日常工作中需要对字典进行合并操作,下面提供几个操作方法 1.使用dict(a,**b) 例: >>> a={'a':1,'b':2} >>> b={' ...
- JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值
在.net mvc的controller中,方法返回JsonResult,一般我们这么写: [HttpPost] public JsonResult QueryFeature(string u ...
- MySQL8.0.11解压版安装详细教程
1. 从官网下载zip包 官网网址(https://dev.mysql.com/downloads/mysql/) 2. 解压 将压缩包解压到一个目录(后续将此目录作为安装目录),我这里是解压到了D: ...
- PHP 实现微信小程序敏感图片、内容检测接口
主要是为了调用微信小程序msgSecCheck.imgSecCheck接口. 先附上小程序接口说明文档地址:https://developers.weixin.qq.com/miniprogram/d ...
- Winform form窗体已弹出框的形式出现并回传值
From2(弹出框)回传数据到From1 Form1(数据接收form): public string Sstr; private void button1_Click(object sender, ...
