【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][ ...
随机推荐
- 图像滤镜艺术--Toaster滤镜
原文:图像滤镜艺术--Toaster滤镜 根据Instagram CEO的说法,Toaster滤镜是Instagram所有滤镜中最复杂的滤镜,这个滤镜给人一种新奇的红色烘烤感,很能让人联想起这 ...
- linux的自动化操作相关使用方法汇总 专题
Crontab中的除号(slash)到底怎么用? crontab 是Linux中配置定时任务的工具,在各种配置中,我们经常会看到除号(Slash)的使用,那么这个除号到底标示什么意思,使用中有哪些需要 ...
- 使用NEWSEQUENTIALID解决GUID聚集索引问题
原文:使用NEWSEQUENTIALID解决GUID聚集索引问题 UNIQUEIDENTIFIER做主键(Primary Key)是一件很方便的事情,在数据合并等操作中有不可替代的优势 但是由于普通的 ...
- 零元学Expression Blend 4 - Chapter 25 以Text相关功能就能简单做出具有设计感的登入画面
原文:零元学Expression Blend 4 - Chapter 25 以Text相关功能就能简单做出具有设计感的登入画面 本章将交大家如何运用Blend 4 内的Text相关功能做出有设计感的登 ...
- 用C#修改系统区域和语言设置
原文:用C#修改系统区域和语言设置 这几天做项目,因为客户机的系统不同,发现客户机的区域和语言设置也不尽相同,导致程序运行时根据时间判断的很多属性和方法都出现各种各样的千奇百怪的问题. 修改程序太费时 ...
- jdbc连接oracle数据库字符串
jdbc连接oracle数据库有两种方式: 连接数据库SID 连接数据库service_name 当连接SID时,字符串如下: url::orcl1" password="xxxx ...
- 【备忘】C#语言基础-1
C#基础 注意区别哟! C#是一种托管语言,与C++不同,不能直接操作系统底层,依赖于 framework. 如果局部变量和全局变量同名,全局变量就会被屏蔽. 函数的返回值类型不是签名的一部分,所以不 ...
- Newtonsoft.Json高级用法之枚举中文转义
最近看博客园中 焰尾迭的两篇关于"Newtonsoft.Json高级用法"的文章受到了很多人的评论,一度登入到头条推荐. 今天我就不再重复焰尾迭博文中的一些提过的Newtonsof ...
- C++ 王者归来:对编程语言的需求总结为四个:效率,灵活,抽象,生产率(C++玩的是前三个,Java和C#玩的是后两个)
Why C++ ? 王者归来(转载) 因为又有人邀请我去Quora的C2C网站去回答问题去了,这回是 关于 @laiyonghao 的这篇有点争议的博文<2012 不宜进入的三个技术点>A ...
- 条款14:在资源管理类中小心copying行为
请牢记: 1.复制RAII对象必须一并复制它所管理的资源,所以资源的copying行为决定RAII对象的copying行为. 2.普遍常见的RAII class copying行为是:抑制copyin ...