【POJ - 1573】Robot Motion
-->Robot Motion
直接中文
Descriptions:
样例1
样例2
N 向上
S 向下
E 向右
W 向左
例如,假设机器人从网格1的北(顶)侧开始,从南(下)开始。机器人所遵循的路径如图所示。在离开网格之前,机器人在网格中执行10条指令。
比较网格2中发生的情况:机器人仅通过3条指令,然后通过8条指令开始循环,并且永不退出。
您将编写一个程序来确定机器人离开网格所需的时间或机器人如何循环。
Input
Output
Sample Input
3 6 5
NEESWE
WWWESS
SNWWWW
4 5 1
SESWE
EESNW
NWEEN
EWSEN
0 0 0
Sample Output
10 step(s) to exit
3 step(s) before a loop of 8 step(s)
题目链接
https://vjudge.net/problem/POJ-1573
没啥说的,直接dfs搜就行
AC代码
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define mod 1000000007
#define eps 1e-6
#define ll long long
#define INF 0x3f3f3f3f
#define MEM(x,y) memset(x,y,sizeof(x))
#define Maxn 25
using namespace std;
int r,c,s;//行,列,从第s列开始
char mp[Maxn][Maxn];//地图
int vis[Maxn][Maxn];//标记是否走过
int step[Maxn][Maxn];//(x,y)是第几步 //(x,y) 下一步的字母标志 到(x,y)已是第step步
void dfs(int x,int y,char op,int start)
{
//走出迷宫
if(mp[x][y]=='X'||x<&&y<&&x>r&&y>c)
cout<<start<<" step(s) to exit"<<endl;
//(x,y)没走过
else if(!vis[x][y])
{
vis[x][y]=;
step[x][y]=start+;
//四种走法
if(op=='N')
return dfs(x-,y,mp[x-][y],step[x][y]);
if(op=='S')
return dfs(x+,y,mp[x+][y],step[x][y]);
if(op=='E')
return dfs(x,y+,mp[x][y+],step[x][y]);
if(op=='W')
return dfs(x,y-,mp[x][y-],step[x][y]);
}
//(x,y)走过,输出即可
else if(vis)
cout<<step[x][y]-<<" step(s) before a loop of "<<start+-step[x][y]<<" step(s)"<<endl;
}
int main()
{
while(cin>>r>>c>>s,r+c+s)
{
//初始化
MEM(mp,'X');
MEM(vis,);
MEM(step,);
for(int i=; i<=r; i++)
for(int j=; j<=c; j++)
cin>>mp[i][j];
step[][s]=;
dfs(,s,mp[][s],step[][s]);
}
}
【POJ - 1573】Robot Motion的更多相关文章
- POJ 1573:Robot Motion
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11324 Accepted: 5512 Des ...
- bzoj 2295: 【POJ Challenge】我爱你啊
2295: [POJ Challenge]我爱你啊 Time Limit: 1 Sec Memory Limit: 128 MB Description ftiasch是个十分受女生欢迎的同学,所以 ...
- 【链表】BZOJ 2288: 【POJ Challenge】生日礼物
2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 382 Solved: 111[Submit][S ...
- BZOJ2288: 【POJ Challenge】生日礼物
2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 284 Solved: 82[Submit][St ...
- BZOJ2293: 【POJ Challenge】吉他英雄
2293: [POJ Challenge]吉他英雄 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 80 Solved: 59[Submit][Stat ...
- BZOJ2287: 【POJ Challenge】消失之物
2287: [POJ Challenge]消失之物 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 254 Solved: 140[Submit][S ...
- BZOJ2295: 【POJ Challenge】我爱你啊
2295: [POJ Challenge]我爱你啊 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 126 Solved: 90[Submit][Sta ...
- BZOJ2296: 【POJ Challenge】随机种子
2296: [POJ Challenge]随机种子 Time Limit: 1 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 114 Solv ...
- BZOJ2292: 【POJ Challenge 】永远挑战
2292: [POJ Challenge ]永远挑战 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 513 Solved: 201[Submit][ ...
随机推荐
- Editor.md v1.4.2 发布,改进自定义工具栏
分享 <关于我> 分享 [中文纪录片]互联网时代 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...
- MSYS2 环境搭建,并整合Qt
本机环境:Windows XP 32位MSYS2地址:http://sourceforge.net/projects/msys2/ 下载32位版本,地址:http://sourceforge.net/ ...
- Delphi类与方法(几十篇)
http://www.cnblogs.com/del/category/114896.html
- Linux字体显示不同颜色
功能介绍哦:让echo输出字符串显示不同颜色 一.字体颜色(范围:30-37) echo -e "\033[30m oldboy trainning \033[0m" 黑色字(黑色 ...
- rm、shutdown、磁盘挂载、vi使用方法
1. 系统管理文件 1.1 rm 文件与目录有关命令 删除命令 (慎用) --- 数据是否备份了 rm === remove rm /oldboy/oldboy.txt --- 删除文件 rm ...
- 视频直播技术之iOS端推流
随着网络基础建设的发展和资费的下降,在这个内容消费升级的时代,文字.图片无法满足人们对视觉的需求,因此视频直播应运而生.承载了实时性Real-Time和交互性的直播云服务是直播覆盖各行各业的新动力.网 ...
- Linux 中文设置
命令 locale,查看Linux默认系统语言 [root@VM_0_15_centos /]# locale LANG=en_US.utf8 LC_CTYPE="en_US.utf8&q ...
- Storm —— 单机环境搭建
1. 安装环境要求 you need to install Storm's dependencies on Nimbus and the worker machines. These are: Jav ...
- Ceph RGW Multisite 数据同步流程图
- 浅说——树形DP
啊!DP! 顾名思义,树形DP就是在树上所做的动态规划.我们一般所做的动态规划多是线性的,线性DP我们可以从前向后或从后向前两种方法,不妨类比一下,在树上我们同样可以有两种方法,从根向树叶或者从树叶向 ...