滑雪
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 79519   Accepted: 29581

Description

Michael 喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个 区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子

  1. 1 2 3 4 5

  2. 16 17 18 19 6

  3. 15 24 25 20 7

  4. 14 23 22 21 8

  5. 13 12 11 10 9

一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。

Input

输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。

Output

输出最长区域的长度。

Sample Input

  1. 5 5
  2. 1 2 3 4 5
  3. 16 17 18 19 6
  4. 15 24 25 20 7
  5. 14 23 22 21 8
  6. 13 12 11 10 9

Sample Output

  1. 25
  2.  
  3. 代码:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <ctype.h>
  5. #include <time.h>
  6. #include <math.h>
  7. #include <iostream>
  8. #include <string>
  9. #include <queue>
  10. #include <algorithm>
  11. #define INF 0x3f3f3f3f
  12. #define N 100+2
  13. #define R_for(i, n) for(i=0; i<n; i++)
  14. #define r_for(i, n) for(i=1; i<=n; i++)
  15. #define D_for(i, n) for(i=n-1; i>=0; i--)
  16. #define d_for(i, n) for(i=n; i>=1; i--)
  17.  
  18. using namespace std;
  19. int n, m;
  20. int map[N][N];
  21. int dis[N][N];
  22. int f[4][2]= {{0, -1}, {0, 1}, {-1, 0}, {1, 0} };
  23. struct node
  24. {
  25. int x, y;
  26. } t;
  27. int ans;
  28.  
  29. int DFS(int posi, int posj)
  30. {
  31. int i;
  32. if(dis[posi][posj]!=0)
  33. return dis[posi][posj];
  34.  
  35. for(i=0; i<4; i++)
  36. {
  37. int xx=posi+f[i][0];
  38. int yy=posj+f[i][1];
  39.  
  40. if((xx>=0&&xx<n)&&(yy>=0&&yy<m) && map[xx][yy]<map[posi][posj])
  41. {
  42. int dd=DFS(xx, yy);
  43. if(dis[posi][posj]<=dd)
  44. dis[posi][posj]=dd+1;
  45. }
  46. }
  47. return dis[posi][posj];
  48. }
  49.  
  50. int main()
  51. {
  52. int i, j;
  53.  
  54. while(scanf("%d %d", &n, &m)!=EOF)
  55. {
  56. R_for(i, n)
  57. R_for(j, m)
  58. {
  59. scanf("%d", &map[i][j] );
  60. }
  61.  
  62. memset(dis, 0, sizeof(dis));
  63.  
  64. ans=-1;
  65. R_for(i, n)
  66. {
  67. R_for(j, m)
  68. {
  69. int dd=DFS(i ,j);
  70. if(dd>ans)
  71. {
  72. ans=dd;
  73. }
  74. }
  75. }
  76. printf("%d\n", ans+1);
  77. }
  78. return 0;
  79. }

POJ 1088 滑雪 ( DFS+动态规划思想 )的更多相关文章

  1. POJ 1088 滑雪 DFS 记忆化搜索

    http://poj.org/problem?id=1088 校运会放假继续来水一发^ ^ 不过又要各种复习,功课拉下了许多 QAQ. 还有呀,就是昨天被一个学姐教育了一番,太感谢了,嘻嘻^ ^ 好了 ...

  2. POJ 1088 滑雪(记忆化搜索+dp)

    POJ 1088 滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 107319   Accepted: 40893 De ...

  3. POJ 1088 滑雪(记忆化搜索)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 92384   Accepted: 34948 Description ...

  4. POJ 1088 滑雪 【记忆化搜索经典】

    题目链接:http://poj.org/problem?id=1088 滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions:  ...

  5. POJ 1088 滑雪 -- 动态规划

    题目地址:http://poj.org/problem?id=1088 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...

  6. [ACM] poj 1088 滑雪 (内存搜索DFS)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 73409   Accepted: 27141 Description ...

  7. poj 1088 滑雪 DP(dfs的记忆化搜索)

    题目地址:http://poj.org/problem?id=1088 题目大意:给你一个m*n的矩阵 如果其中一个点高于另一个点 那么就可以从高点向下滑 直到没有可以下滑的时候 就得到一条下滑路径 ...

  8. POJ 1088 滑雪(模板题 DFS+记忆化)

    Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  9. OpenJudge/Poj 1088 滑雪

    1.链接地址: bailian.openjudge.cn/practice/1088 http://poj.org/problem?id=1088 2.题目: 总Time Limit: 1000ms ...

随机推荐

  1. BZOJ 1044 木棍分割(二分答案 + DP优化)

    题目链接  木棍分割 1044: [HAOI2008]木棍分割 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3830  Solved: 1453[S ...

  2. 洛谷——P2737 [USACO4.1]麦香牛块Beef McNuggets

    https://www.luogu.org/problemnew/show/P2737 题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办 ...

  3. linux grep 查找文件内容

    自试: wang@wang:~$ grep -i "*args*" ~/IGV01-SW/src/bzrobot_diagnostics/bzrobot_lightbelt_man ...

  4. Codeforces Round #295 (Div. 1) C. Pluses everywhere

    昨天ZZD大神邀请我做一道题,说这题很有趣啊. 哇,然后我被虐了. Orz ZZD 题目大意: 你有一个长度为n的'0-9'串,你要在其中加入k个'+'号,每种方案就会形成一个算式,算式算出来的值记做 ...

  5. 为什么我们要用Python

    最近有一个朋友问我:为什么我要用Python,这是一个好问题,今天有空,把这个问题简单整理了一下,回来朋友的问题.该整理主要来源于网络和其他资料,如果有侵权还请告知.         Python的好 ...

  6. CEF General Usage(CEF3预览)

    CEF General Usage(CEF3预览) 介绍 CEF全称Chromium Embedded Framework,是一个基于Google Chromium 的开源项目.Google Chro ...

  7. iOS应用崩溃日志揭秘

    这篇文章还可以在这里找到 英语 Learn how to make sense of crash logs! 本文作者是 Soheil Moayedi Azarpour, 他是一名独立iOS开发者. ...

  8. 深入Android渲染机制

    1.知识储备 CPU: 中央处理器,它集成了运算,缓冲,控制等单元,包括绘图功能.CPU将对象处理为多维图形,纹理(Bitmaps.Drawables等都是一起打包到统一的纹理). GPU:一个类似于 ...

  9. MySQL常用SQL整理

    MySQL常用SQL整理 一.DDL #创建数据库 CREATE DATABASE IF NOT EXISTS product DEFAULT CHARSET utf8 COLLATE utf8_ge ...

  10. 算法——字符串匹配之BM算法

    前言 Boyer-Moore算法是一种基于后缀匹配的模式串匹配算法(简称BM算法),后缀匹配就是模式串从右到左開始比較,但模式串的移动依旧是从左到右的.在实践中.BM算法效率高于前面介绍的<KM ...