嗯...

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1035

这道题比较简单,但自己一直被卡,原因就是在读入mp这张字符图的时候用了scanf被卡...

注意初始化和dfs边界:如果超出图或者曾经被标记过则输出

AC代码:

 #include<cstdio>
#include<cstring>
#include<iostream> using namespace std; char mp[][];
int k, a, b, c, flag[][]; inline void dfs(int x, int y){
if(x <= || y <= || x > a || y > b){
printf("%d step(s) to exit\n", k);
return;
}
if(flag[x][y] != ){
printf("%d step(s) before a loop of %d step(s)\n", flag[x][y] - , k - flag[x][y] + );//k - (flag[x][y] - 1)
return;
}
if(mp[x][y] == 'E'){
k++;
flag[x][y] = k;
dfs(x, y + );
}
else if(mp[x][y] == 'W'){
k++;
flag[x][y] = k;
dfs(x, y - );
}
else if(mp[x][y] == 'N'){
k++;
flag[x][y] = k;
dfs(x - , y);
}
else if(mp[x][y] == 'S'){
k++;
flag[x][y] = k;
dfs(x + , y);
}
} int main(){
while(scanf("%d%d%d", &a, &b, &c) != EOF && a + b){
memset(flag, , sizeof(flag));
for(int i = ; i <= a; i++)
for(int j = ; j <= b; j++)
cin >> mp[i][j];//scanf会被卡
k = ;
dfs(, c);
}
return ;
}

AC代码

HDU 1035 Robot Motion(dfs + 模拟)的更多相关文章

  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(模拟)

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

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

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

  5. [ACM] hdu 1035 Robot Motion (模拟或DFS)

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

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

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

  7. hdu1035 Robot Motion (DFS)

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

  8. hdoj 1035 Robot Motion

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

  9. poj 1573 Robot Motion【模拟题 写个while循环一直到机器人跳出来】

                                                                                                         ...

随机推荐

  1. SparkStreaming个人记录

    一.SparkStreaming概述 SparkStreaming是一种构建在Spark基础上的实时计算框架,它扩展了Spark处理大规模流式数据的能力,以吞吐量高和容错能力强著称. SparkStr ...

  2. Unity小知识点大全(一)

    原帖地址:https://zhuanlan.zhihu.com/p/54763553 1. 高亮选择 在Scene面板右上角的Gizmo下拉列表中,可以通过设置Selection Outline选项决 ...

  3. PHP正则表达式常用例子

    "^[0-9]*[1-9][0-9]*$" //正整数"^((-\d+)|(0+))$" //非正整数(负整数 + 0)"^-[0-9]*[1-9][ ...

  4. 清理rancher、k8s环境

    清理rancher.k8s环境 待办 https://blog.csdn.net/CSDN_duomaomao/article/details/77684571

  5. 最小生成树计数 模板 hdu 4408

    题意是给定n个点,m条边的无向图,求最小生成树的个数对p取模. 用kruscal计算最小生成树时,每次取连接了两个不同联通块的最小的边.也就是先处理d1条c1长度的边,再处理d2条c2长度的边.长度相 ...

  6. RLE压缩算法详解

    from:http://data.biancheng.net/view/152.html RLE压缩算法(下简称RLE算法)的基本思路是把数据按照线性序列分成两种情况:一种是连续的重复数据块,另一种是 ...

  7. python之 '随机'

    Q:想生成随机数,用哪个库? import random Q:想生成一个随机整数,范围在[0, 100]之内,怎么弄? >>> random.randint(0, 100) 7 Q: ...

  8. 实现在vue中element-ui的el-dialog弹框拖拽

    参考:实现在vue中element-ui的el-dialog弹框拖拽 1.在 utils 中新建 directives.js 文件 import Vue from 'vue' // v-dialogD ...

  9. go get下载包失败问题

    文章引用自 解决go get下载包失败问题 从github克隆 golang在github上建立了一个镜像库,如https://github.com/golang/net就对应是 https://go ...

  10. dfs(迷宫)

    问题 J: 棋盘行走 时间限制: 1 Sec  内存限制: 128 MB[命题人:admin] 题目描述 小Biu在玩一个棋盘游戏,这个游戏给出一个n*m的棋盘,并且每个点上有一个棋子,棋子的颜色 用 ...