HDU - 1035
wa了一遍,炸了两遍
(1)迷宫题中的模拟题。只需要简单代码就可以ac。如果程序有问题,最后就会卡死,出现runtime error。
(2)边界问题一定要小心,数组是从0开始的,就要考虑r--会不会小于0,导致访问Vis[r][c]下标越界。正常情况下,越界很有可能是下标为负数引起的,此类问题要当心。
(3)map不要随便用,正常开二维数组vis就可以了。
(4)这种四个方向的,很多操作都重复了,要适当简化代码
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxn 100
#define rep(i,a,b) for(int i=(a);i<(b);i++)
#define ll long long
char s[maxn][maxn];
int vis[maxn][maxn]; int main()
{
int n,m,k;
while(~scanf("%d%d",&n,&m))
{
rep(i,,maxn){
rep(j,,maxn)
vis[i][j]=;
}
if(n==&&m==)
break;
scanf("%d",&k);
rep(i,,n)
scanf("%s",s[i]); int r=;
int c=k-;
vis[r][c]=; int ans=;
int cnt=; int f=; while(r>=&&r<n&&c>=&&c<m)//起点也可能在迷宫外,必须加上条件
{
int pre=vis[r][c];
ans=vis[r][c];
if(s[r][c]=='S')
r++;
else if(s[r][c]=='N')
r--;
else if(s[r][c]=='W')
c--;
else if(s[r][c]=='E')
c++; if(r<||r>=n||c<||c>=m)//r,c可能小于0,必须加上
break;
if(vis[r][c])
{
f=-;
ans=pre-vis[r][c]+;
cnt=vis[r][c]-;
break;
}
vis[r][c]=pre+;
} if(f==)
{
printf("%d step(s) to exit\n",ans);
}
else if(f==-)
{
printf("%d step(s) before a loop of %d step(s)\n",cnt,ans);
}
}
return ;
}
HDU - 1035的更多相关文章
- HDOJ(HDU).1035 Robot Motion (DFS)
HDOJ(HDU).1035 Robot Motion [从零开始DFS(4)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DF ...
- hdu 1035 Robot Motion(dfs)
虽然做出来了,还是很失望的!!! 加油!!!还是慢慢来吧!!! >>>>>>>>>>>>>>>>> ...
- HDU 1035 Robot Motion(dfs + 模拟)
嗯... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1035 这道题比较简单,但自己一直被卡,原因就是在读入mp这张字符图的时候用了scanf被卡. ...
- 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 ...
- (step 4.3.5)hdu 1035(Robot Motion——DFS)
题目大意:输入三个整数n,m,k,分别表示在接下来有一个n行m列的地图.一个机器人从第一行的第k列进入.问机器人经过多少步才能出来.如果出现了循环 则输出循环的步数 解题思路:DFS 代码如下(有详细 ...
- hdu 1035 Robot Motion(模拟)
Problem Description A robot has been programmed to follow the instructions in its path. Instructions ...
- HDU 1035(走迷宫 模拟)
题意是给定初始位置在一个迷宫中按照要求前进,判断多少步能离开迷宫或者多少步会走入一个长达多少步的循环. 按要求模拟前进的位置,对每一步在 vis[ ] 数组中进行已走步数的记录,走出去或走到已走过的位 ...
- 题解报告:hdu 1035 Robot Motion(简单搜索一遍)
Problem Description A robot has been programmed to follow the instructions in its path. Instructions ...
- hdu 1035(DFS)
Robot Motion Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
随机推荐
- Django-admin管理工具
知识预览 admin组件使用 admin源码解析 admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目 ...
- 自定义 js 文件的集成引用
这里的内容, 提前要知道 import comm from ‘...’ 和 import { comm } from ‘...’ 的基础知识. 我举个案例, 当你有很多api文件的时候, 比如 ...
- JMC监控(Windows上远程连接监控Linux服务器的JVM)
Windows上远程连接监控Linux服务器的JVM:1.Linux服务器上配置:在Tomcat的tomcat-wms/bin/catalina.sh中添加CATALINA_OPTS="-X ...
- 2016湖南省赛 [Cloned]
A.2016 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数. Input 输入包含不超过 30 组数 ...
- React生命周期详解
React生命周期图解: 一.旧版图解: 二.新版图解: 从图中,我们可以清楚知道React的生命周期分为三个部分: 实例化.存在期和销毁时. 旧版生命周期如果要开启async rendering, ...
- dataTable tab栏切换时错位解决办法
做后台管理类网站肯定要写列表,首选dataTable,功能强大 最近在做一个tab栏切换时发现了一个很诡异的事情:表头错位了! 主要时因为当table被隐藏后,table的header宽度会计算错乱, ...
- dataTables 插件学习整理
在项目中使用了dataTables 插件,学习整理一下. dataTables 的官方中文网站 http://www.datatables.club 引入文件: 所有的都要引入 jq文件 1. dat ...
- [Cordova inAppBrowser 在App内打开浏览器]
方案1: 使用Cordova插件 cordova-plugin-inappbrowser 1. 添加插件 cordova plugin add cordova-plugin-inappbrowser ...
- Laravel——安装Laravel-admin
前言 环境 : WAMP | Windows 7 | PHP 7.0.4 | MySQL 5.7.11 | Apache 2.4.18 框架 : Laravel | Laravel-admin 文档 ...
- 洛谷 P1494 [国家集训队] 小Z的袜子
题目概述: 小Z把N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬. 你的任务 ...