题目链接:http://acm.xidian.edu.cn/problem.php?id=1316

  dfs + 记忆化搜索,因为dfs的回溯,很方便的可以在每一点做记忆;

  dfs定义变量一定要注意全局和局部;

 1 #include<stdio.h>
 2 #include<memory.h>
 3 #include<algorithm>
 4
 5 using namespace std;
 6 int A[1005][1005];
 7 int d[1001][1001];
 8 int n, m;
 9 int max_len;
10 int dx[4] = {-1, 0, 1, 0};
11 int dy[4] = {0, -1, 0, 1};
12
13 int dfs(int x, int y)
14 {
15     if(d[x][y] != 0)                //判断是否有子树已经被经历过
16         return d[x][y];
17     int len = 1;                     //**********dfs中的量,尽可能都在dfs中定义,因为该量会随dfs递归和回溯,定义为全局变量会出事(1h血的教训!!!)
18     for(int k = 0;k < 4;k++)
19     {
20         int di = x + dx[k];
21         int dj = y + dy[k];
22         if(di >= 0 && di < n && dj >= 0 && dj < m && A[di][dj] > A[x][y])
23         {
24             len = max(len, dfs(di,dj) + 1);
25         }
26     }
27      d[x][y] = len;                        //通过回溯来实现倒着记录层数(语言匮乏,你可以试着用bfs想一下,发现bfs很难做到)
28      return len;
29 }
30
31 int main()
32 {
33     int T;
34     while(scanf("%d",&T) != EOF)
35     {
36         while(T--)
37         {
38             memset(d,0,sizeof(d));
39             max_len = -1;
40             scanf("%d %d",&n, &m);
41             for(int i = 0;i < n;i++)
42                 for(int j = 0;j < m;j++)
43                     scanf("%d",&A[i][j]);
44             for(int i = 0;i < n;i++)
45                 for(int j = 0;j < m;j++)
46                 {
47                      max_len = max(max_len,dfs(i,j));        //在各个点执行dfs,找出最长路径
48                 }
49             printf("%d\n",max_len);
50         }
51     }
52     return 0;
53 } 

转载于:https://www.cnblogs.com/Dicer/p/9114552.html

G:jlz的漫步(1316)相关推荐

  1. 2021CSP入门级第一轮认证详细解析

    预计阅读时间:10分钟 1.单选题(2分) 以下不属于面向对象程序设计语言的是( ). A.C++ B.Python C.Java D.C 解析:C语言并非面相对对象,而是面向过程. 答案:D 2.单 ...

  2. 文件上传之伪Ajax方式上传

    From: <由 Windows Internet Explorer 8 保存> Subject: =?gb2312?B?zsS8/snPtKvWrs6xQWpheLe9yr3Jz7SrI ...

  3. 搜索专题: HDU1428漫步校园

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. hdoj1428 -- 漫步校园 (记忆化搜索)

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  5. Light OJ 1316 A Wedding Party 最短路+状态压缩DP

    题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...

  6. Day19-22 2021/10/13-16 JAVA贪吃蛇 全注释版

    Day19-22 2021/10/13-16 贪吃蛇 帧:如果时间足够小 就是动画 键盘监听 定时器 Timer package snale; import javax.swing.*; /*** @ ...

  7. RL 实践(3)—— 悬崖漫步【QLearning Sarsa 各种变体】

    本文介绍如何用 QLeaning 系列和 Sarsa 系列表格方法解经典的悬崖漫步 (Cliff Walking) 问题 完整代码下载:4_[Gym Custom] Cliff Walking (Q- ...

  8. 数据分析学习笔记(六)-- 随机漫步

    该例子通过模拟一些随机数,完成简单的数理统计工作,作为后期数据分析的一次体验 随机漫步:随机产生1或-1随机数,模仿一个人前进或者后退 在此环境下,进行一些统计工作 随机漫步 首页做一些准备工作 im ...

  9. SSLOJ 1316.血色先锋军

    1316.血色先锋军 时间限制:1000MS内存限制:256000KB 题目描述 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物.孤立于 ...

最新文章

  1. Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[2]
  2. pycharm如何在程序运行后查看变量的值,变量的类型(不通过print和debug的方式)
  3. 东鹏马桶上水下水之谜
  4. div弹窗如何设置不超出页面_js实现弹窗功能(以支付方式为例)
  5. Luogu P2735 电网【真·计算几何/Pick定理】By cellur925
  6. HP DL388G5 安装64位linux虚拟系统出错!
  7. 原生js使用forEach()与jquery使用each遍历数组,return false 的区别
  8. 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动
  9. 2017.8.11 亚瑟王 失败总结
  10. MFC开发IM-字符串转换大全
  11. “编程能力差,90%输在了这点上!”骨灰级工程师:其实你们都是瞎努力!
  12. [Python设计模式] 第14章 老板来了——观察者模式
  13. 最新的.net书籍教程 更新时间:2005-9-5
  14. 2. wordpress 友情链接的备份和导入
  15. 深度好文:这才是实际工作中的竞品分析
  16. 29.正向和负向Lookahead
  17. 完美国际架设mysql_完美国际SF-物理机架设服务端教程
  18. 沈向洋:为何读论文这么难?
  19. 网页源文件星号怎么显示_怎么查看网页星号密码?4种浏览器网页星号点号密码查看方法介绍...
  20. 成龙坦言演蒲松龄曾打退堂鼓:我演大文豪谁信啊

热门文章

  1. 杂牌平板mt6797_10核时代到来 全网通联发科MT6797发布
  2. 不得不折服的人生感悟
  3. 道路曲折,J4105核显直通实验成功了
  4. 特斯拉自动驾驶实为弥天大谎!总监实锤造假,牵出一桩华人工程师命案
  5. 游戏中的开放世界和海量的细节有没有意义?
  6. 数据可视化_科学统计图表8——ggplot颜色代码详解
  7. 小狼豪输入发相关安装使用----值得推荐 的输入法
  8. C++:了解SGI-STL空间配置器
  9. 推荐一个很棒的免费自助建站工具:Tap
  10. 传感器的使用:光线传感器