机器人已被编程为按照其指令中的路径进行操作。机器人要移动的下一个方向的指令放在网格中。可能的指令是
N north (up the page) 
S south (down the page) 
E east (to the right on the page) 
W west (to the left on the page)

例如,假设机器人从网格1的北面(顶部)开始,然后开始向南(下)。机器人的路径如图所示。在离开网格之前,机器人会在网格中执行10条指令。

比较一下网格2:机器人只经过3次指令,然后通过8条指令开始循环,从不退出。

您要编写一个程序,用于确定机器人离开网格所需的时间以及机器人环绕的周期。

Input

将有一个或多个网格用于漫游器导航。每个数据的格式如下。第一行是三个整数,以空格分隔:网格中的行数,网格中的列数以及机器人从北方进入的列数。可能的条目列从左侧开始编号。然后来排列方向说明。每个网格将具有至少一个,最多十行和多列指令。指令行仅包含没有空格的字符N,S,E或W。输入结束由含0 0 0的行表示。
Output

对于输入中的每个网格,都有一行输出。机器人遵循一定数量的指令,并在四方面的任何一个上退出网格,否则机器人会按照一定数量的位置上的指令进行一次,然后重复一些位置上的指令。下面的样本输入对应于上面的两个网格,并说明了两种形式的输出。 “step”一词紧随其后的是“(s)”,前面的数字是否为1。
Sample Input

3 6 5
NEESWE
WWWESS
SNWWWW
4 5 1
SESWE
EESNW
NWEEN
EWSEN
0 0

Sample Output

10 step(s) to exit
3 step(s) before a loop of 8 step(s)
 #include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
char paths[][];
int step[][];
int r,c,start,row,col,exitstep,diestep,diex,diey;
bool die = false;
/*感想:实现递归的过程,一定要注意代码的整洁,不是指格式,而是逻辑思路,
就像数学的提取公因式一样,不要把同样的语句写太多遍,重复语句的执行会增加运行时间,
简单说,有可能因为的重复语句,不能实现AC目的*/
void solve(int row,int col,int num)
{
if(row < || col < || row >= r || col >= c) /*跳出网格*/
{
exitstep = num;
return;
}
if(step[row][col]) /*陷入循环*/
{
die = true;
diex = col;
diey = row;
diestep = step[row][col];
step[row][col] = num - step[row][col];
return;
}
//cout<<paths[row][col]<<endl;
step[row][col] = num;
if(paths[row][col] == 'N')
solve(row-,col,num+);
else if(paths[row][col] == 'S')
solve(row+,col,num+);
else if(paths[row][col] == 'E')
solve(row,col+,num+);
else if(paths[row][col] == 'W')
solve(row,col-,num+);
} int main()
{
while(cin>>r>>c,r||c)
{
cin>>start;
for(int i = ; i < r; i++)
scanf("%s",paths[i]);
memset(step,,sizeof(step));
die = false;
start = start -;
solve(,start,);
if(die) //3 step(s) before a loop of 8 step(s)
cout<< --diestep<<" step(s) before a loop of "<<step[diey][diex]<<" step(s)"<<endl;
else //10 step(s) to exit
cout<<--exitstep<<" step(s) to exit"<<endl;
}
return ;
}

ACM Robot Motion的更多相关文章

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

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

  2. HDU-1035 Robot Motion

    http://acm.hdu.edu.cn/showproblem.php?pid=1035 Robot Motion Time Limit: 2000/1000 MS (Java/Others)   ...

  3. poj1573 Robot Motion

    Robot Motion Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12507   Accepted: 6070 Des ...

  4. Robot Motion(imitate)

    Robot Motion Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11065   Accepted: 5378 Des ...

  5. 模拟 POJ 1573 Robot Motion

    题目地址:http://poj.org/problem?id=1573 /* 题意:给定地图和起始位置,robot(上下左右)一步一步去走,问走出地图的步数 如果是死循环,输出走进死循环之前的步数和死 ...

  6. POJ 1573 Robot Motion(BFS)

    Robot Motion Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12856   Accepted: 6240 Des ...

  7. Robot Motion 分类: POJ 2015-06-29 13:45 11人阅读 评论(0) 收藏

    Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11262 Accepted: 5482 Descrip ...

  8. POJ 1573 Robot Motion

    Robot Motion Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12978   Accepted: 6290 Des ...

  9. Poj OpenJudge 百练 1573 Robot Motion

    1.Link: http://poj.org/problem?id=1573 http://bailian.openjudge.cn/practice/1573/ 2.Content: Robot M ...

随机推荐

  1. [论文阅读]VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION(VGGNet)

    VGGNet由牛津大学的视觉几何组(Visual Geometry Group)提出,是ILSVRC-2014中定位任务第一名和分类任务第二名.本文的主要贡献点就是使用小的卷积核(3x3)来增加网络的 ...

  2. 如何用elementui去实现图片上传和表单提交,用axios的post方法

    下面是在vue搭建的脚手架项目中的组件component文件夹下面的upload.vue文件中的内容 <!--这个组件主要用来研究upload这个elementui的上传插件组件--> & ...

  3. 什么是web框架

    什么是web框架 web应用框架是支持动态网站.网络应用程序的软件框架. web框架的工作方式:接收http请求并处理,分派代码, 产生html,创建http响应. web框架 通常包含了:url路由 ...

  4. python常用的一些东西——sys、os等(转)

    1.常用内置函数:(不用import就可以直接使用)      help(obj) 在线帮助, obj可是任何类型     callable(obj) 查看一个obj是不是可以像函数一样调用     ...

  5. 爬取IP

    import urllib.request import re def url_open(url): req = urllib.request.Request(url,headers={'User-A ...

  6. Visual Studio的一些快捷键

    1)CTRL + W选择当前单词 2) Ctrl+F10: 运行到光标处 1.CTRL + SHIFT + B生成解决方案   2.CTRL + F7 生成编译   3. CTRL + O 打开文件  ...

  7. [LeetCode] Min Cost Climbing Stairs 爬楼梯的最小损失

    On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you pay ...

  8. 网易云安全两篇论文入选计算机视觉顶级会议ICCV

    本文由  网易云发布. 10月22日至29日,全球计算机视觉顶尖专家们共聚威尼斯,参加ICCV2017国际计算机视觉大会,就领域内最新成果展开集中研讨,大会论文集也代表了计算机视觉领域最新的发展方向和 ...

  9. 想进大厂,想收获高薪offer,资深猎头告诉你怎么做......

    其实吧,面试官面试的时候主要就看三个方面:现在能力如何,未来潜力如何,人品如何. 第一个因素是最重要的,因为后面两个因素有太多的人为判断因素,无法量化.所谓的面试准备,"现在能力如何&quo ...

  10. [HAOI2012]道路

    题目描述 C国有n座城市,城市之间通过m条[b]单向[/b]道路连接.一条路径被称为最短路,当且仅当不存在从 它的起点到终点的另外一条路径总长度比它小.两条最短路不同,当且仅当它们包含的道路序列不同. ...