wa了一遍,炸了两遍

(1)迷宫题中的模拟题。只需要简单代码就可以ac。如果程序有问题,最后就会卡死,出现runtime error。

(2)边界问题一定要小心,数组是从0开始的,就要考虑r--会不会小于0,导致访问Vis[r][c]下标越界。正常情况下,越界很有可能是下标为负数引起的,此类问题要当心。

(3)map不要随便用,正常开二维数组vis就可以了。

(4)这种四个方向的,很多操作都重复了,要适当简化代码

代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define maxn 100
  4. #define rep(i,a,b) for(int i=(a);i<(b);i++)
  5. #define ll long long
  6. char s[maxn][maxn];
  7. int vis[maxn][maxn];
  8.  
  9. int main()
  10. {
  11. int n,m,k;
  12. while(~scanf("%d%d",&n,&m))
  13. {
  14. rep(i,,maxn){
  15. rep(j,,maxn)
  16. vis[i][j]=;
  17. }
  18. if(n==&&m==)
  19. break;
  20. scanf("%d",&k);
  21. rep(i,,n)
  22. scanf("%s",s[i]);
  23.  
  24. int r=;
  25. int c=k-;
  26. vis[r][c]=;
  27.  
  28. int ans=;
  29. int cnt=;
  30.  
  31. int f=;
  32.  
  33. while(r>=&&r<n&&c>=&&c<m)//起点也可能在迷宫外,必须加上条件
  34. {
  35. int pre=vis[r][c];
  36. ans=vis[r][c];
  37. if(s[r][c]=='S')
  38. r++;
  39. else if(s[r][c]=='N')
  40. r--;
  41. else if(s[r][c]=='W')
  42. c--;
  43. else if(s[r][c]=='E')
  44. c++;
  45.  
  46. if(r<||r>=n||c<||c>=m)//r,c可能小于0,必须加上
  47. break;
  48. if(vis[r][c])
  49. {
  50. f=-;
  51. ans=pre-vis[r][c]+;
  52. cnt=vis[r][c]-;
  53. break;
  54. }
  55. vis[r][c]=pre+;
  56. }
  57.  
  58. if(f==)
  59. {
  60. printf("%d step(s) to exit\n",ans);
  61. }
  62. else if(f==-)
  63. {
  64. printf("%d step(s) before a loop of %d step(s)\n",cnt,ans);
  65. }
  66. }
  67. return ;
  68. }

HDU - 1035的更多相关文章

  1. HDOJ(HDU).1035 Robot Motion (DFS)

    HDOJ(HDU).1035 Robot Motion [从零开始DFS(4)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DF ...

  2. hdu 1035 Robot Motion(dfs)

    虽然做出来了,还是很失望的!!! 加油!!!还是慢慢来吧!!! >>>>>>>>>>>>>>>>> ...

  3. HDU 1035 Robot Motion(dfs + 模拟)

    嗯... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1035 这道题比较简单,但自己一直被卡,原因就是在读入mp这张字符图的时候用了scanf被卡. ...

  4. hdu 1035 (usage of sentinel, proper utilization of switch and goto to make code neat) 分类: hdoj 2015-06-16 12:33 28人阅读 评论(0) 收藏

    as Scott Meyers said in his book Effective STL, "My advice on choosing among the sorting algori ...

  5. (step 4.3.5)hdu 1035(Robot Motion——DFS)

    题目大意:输入三个整数n,m,k,分别表示在接下来有一个n行m列的地图.一个机器人从第一行的第k列进入.问机器人经过多少步才能出来.如果出现了循环 则输出循环的步数 解题思路:DFS 代码如下(有详细 ...

  6. hdu 1035 Robot Motion(模拟)

    Problem Description A robot has been programmed to follow the instructions in its path. Instructions ...

  7. HDU 1035(走迷宫 模拟)

    题意是给定初始位置在一个迷宫中按照要求前进,判断多少步能离开迷宫或者多少步会走入一个长达多少步的循环. 按要求模拟前进的位置,对每一步在 vis[ ] 数组中进行已走步数的记录,走出去或走到已走过的位 ...

  8. 题解报告:hdu 1035 Robot Motion(简单搜索一遍)

    Problem Description A robot has been programmed to follow the instructions in its path. Instructions ...

  9. hdu 1035(DFS)

    Robot Motion Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

随机推荐

  1. Java7 和 Java8 中的 ConcurrentHashMap 原理解析

    Java7 中 ConcurrentHashMap ConcurrentHashMap 和 HashMap 思路是差不多的,但是因为它支持并发操作,所以要复杂一些. 整个 ConcurrentHash ...

  2. JVN的理解

    写的很不错,通俗易懂:http://www.cnblogs.com/leefreeman/p/7344460.html

  3. 【git】git hello world

    以前不怎么会用. http://blog.sina.com.cn/s/blog_1485511700102xdig.html git add 文件夹/            添加整个文件夹及内容 gi ...

  4. vim命令:编辑模式和命令模式

      vim:编辑模式 从一般模式进入编辑模式,只需你按一个键即可(i,I,a,A,o,O,r,R).当进入编辑模式时,会在屏幕的最下一行出现“INSERT或REPLACE”的字样.从编辑模式回到一般模 ...

  5. git bash 连接github并提交项目工程

    借鉴博客:https://www.cnblogs.com/flora5/p/7152556.html https://blog.csdn.net/heng_yan/article/details/79 ...

  6. 如何在springboot项目中进行XSS过滤

    简单介绍 XSS : 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意 ...

  7. TOMCAT原理详解及请求过程(转载)

    转自https://www.cnblogs.com/hggen/p/6264475.html TOMCAT原理详解及请求过程 Tomcat: Tomcat是一个JSP/Servlet容器.其作为Ser ...

  8. 【10】Cookie和Session

    一.cookie和session的介绍 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要"保持状态",因此cookie就是在这样一个场景下 ...

  9. Linux haproxy基础

    代理作用 web缓存,提供缓存功能,可以加速响应过程. 反向代理,可以隐藏后端服务器 内容路由,可把不同内容类型的请求转发至特定服务器, 转码器,与客户端通信,由于带宽限制,可将报文转码压缩:与后端服 ...

  10. JavaScript DOM 高级程序设计读书笔记一

    创建可重用的对象 简而言之,对象就是包含一组变量(称为属性)和函数(称为方法)的集合的实例.对象通常由类派生而来,而类中定义了对象拥有的属性和方法.如果你的脚本中都是对象之间的交互操作,那么就可以称之 ...