HDOJ HDU 1035 Robot Motion
来源:互联网 发布:淘宝客推广宣传海报 编辑:程序博客网 时间:2024/05/21 13:22
HDOJ 1035 Robot Motion
题目
点此查看 HDOJ 1035 Robot Motion
分类
dfs
题意
机器人走迷宫
输入三个数 n m r
表示 n*m的迷宫 机器人从(1,r)进入
此题不同在于 机器人遇到循环
出迷宫 输出 需要步数
进入循环 输出 循环步数
题解
按题意dfs即可
但是在做 标记时要记录步数
再 重复遇到标记时 用当前步数 减去 循环位置记录的步数 即为循环步数
代码
#include <iostream>#include <cstring>#define max 100using namespace std;int r,c;char map[100][100];int vis[100][100];int dir[4][2] = {-1.0,0,1,1,0,0,-1};bool ext;int dfs(int x,int y,int & d);int main(){ int n,d,v; while(cin >> r >> c && r && c) { memset(vis,0,sizeof(vis)); ext = false; v = d = 1; cin >> n; for(int i = 0;i < r;i++) for(int j = 0;j < c;j++) cin >> map[i][j]; vis[0][n-1] = d; v = dfs(0,n-1,d); if(ext) cout << d << " step(s) to exit" << endl; else cout << v-1 << " step(s) before a loop of " << d-v+1 << " step(s)"<< endl; } return 0;}int dfs(int x,int y,int & d){ switch(map[x][y]) { case 'N' : if(x-1 < 0) { ext = true; return d; } if(vis[x-1][y]) { return vis[x-1][y]; }d++; vis[x-1][y] = d; return dfs(x-1,y,d); break; case 'S' : if(x+1 >= r) { ext = true; return d; } if(vis[x+1][y]) return vis[x+1][y]; d++; vis[x+1][y] = d; return dfs(x+1,y,d); break; case 'W' : if(y-1 < 0) { ext = true; return d; } if(vis[x][y-1]) return vis[x][y-1]; d++; vis[x][y-1] = d; return dfs(x,y-1,d); break; case 'E' : if(y+1 >= c) { ext = true; return d; } if(vis[x][y+1]) return vis[x][y+1]; d++; vis[x][y+1] = d; return dfs(x,y+1,d); break; } return 0;}
阅读全文
0 0
- HDOJ HDU 1035 Robot Motion
- HDOJ(HDU).1035 Robot Motion (DFS)
- hdoj 1035 Robot Motion
- HDOJ Robot Motion 1035
- Hdoj 1035 Robot Motion
- hdoj-1035Robot Motion
- HDOJ 1035 Robot Motion
- hdu 1035 Robot Motion
- HDU 1035 Robot Motion
- hdu 1035 Robot Motion
- hdu 1035 Robot Motion
- hdu 1035 Robot Motion
- HDU 1035 Robot Motion
- hdu 1035 Robot Motion
- hdu 1035 robot motion
- HDU-1035Robot Motion
- hdu 1035 Robot Motion
- Robot Motion HDU 1035
- zookeeper集群服务搭建
- 为树莓派添加自动运行
- bzoj 3224: Tyvj 1728 普通平衡树
- 第二周总结(一)
- sublime text3 中无法输入中文的问题
- HDOJ HDU 1035 Robot Motion
- CAS单点登录-简介(一)
- MySQL存储引擎学习
- 图解RNN、RNN变体、Seq2Seq、Attention机制
- 矩阵、向量求导法则
- Struts初学小笔记1《2017-09-08》
- 简单背包练习——完全背包问题
- Lua_技术背景及优点_002
- Spring @Autowired和构造函数的顺序