Robot Motion
Description

A robot has been programmed to follow the instructions in its path. Instructions for the next direction the robot is to move are laid down in a grid. The possible instructions are
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)
For example, suppose the robot starts on the north (top) side of Grid 1 and starts south (down). The path the robot follows is shown. The robot goes through 10 instructions in the grid before leaving the grid.
Compare what happens in Grid 2: the robot goes through 3 instructions only once, and then starts a loop through 8 instructions, and never exits.
You are to write a program that determines how long it takes a robot to get out of the grid or how the robot loops around.
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)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char s[][];
int i,j,m,n,a,p[][];
while(scanf("%d %d %d%*c",&m,&n,&a)&&m&&n&&a)
{
memset(p,,sizeof(p));
for(i=; i<m; i++)
{
for(j=; j<n; j++)
scanf("%c",&s[i][j]);
getchar();
}
j=a-;
i=;
p[i][j]=;
while()
{
if(s[i][j]=='N')
{
if(i-<)
{
printf("%d step(s) to exit\n",p[i][j]);
break;
}
else if(p[i-][j])
{
printf("%d step(s) before a loop of %d step(s)\n",p[i-][j]-,p[i][j]+-p[i-][j]);
break;
}
else
{
p[i-][j]=p[i][j]+;
i--;
continue;
}
}
else if(s[i][j]=='S')
{
if(i+==m)
{
printf("%d step(s) to exit\n",p[i][j]);
break;
}
else if(p[i+][j])
{
printf("%d step(s) before a loop of %d step(s)\n",p[i+][j]-,p[i][j]+-p[i+][j]);
break;
}
else
{
p[i+][j]=p[i][j]+;
i++;
continue;
}
}
else if(s[i][j]=='W')
{
if(j-<)
{
printf("%d step(s) to exit\n",p[i][j]);
break;
}
else if(p[i][j-])
{
printf("%d step(s) before a loop of %d step(s)\n",p[i][j-]-,p[i][j]+-p[i][j-]);
break;
}
else
{
p[i][j-]=p[i][j]+;
j--;
continue;
}
}
else if(s[i][j]=='E')
{
if(j+==n)
{
printf("%d step(s) to exit\n",p[i][j]);
break;
}
else if(p[i][j+])
{
printf("%d step(s) before a loop of %d step(s)\n",p[i][j+]-,p[i][j]+-p[i][j+]);
break;
}
else
{
p[i][j+]=p[i][j]+;
j++;
continue;
}
}
}
}
return ;
}
Robot Motion的更多相关文章
- poj1573 Robot Motion
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12507 Accepted: 6070 Des ...
- Robot Motion(imitate)
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11065 Accepted: 5378 Des ...
- 模拟 POJ 1573 Robot Motion
题目地址:http://poj.org/problem?id=1573 /* 题意:给定地图和起始位置,robot(上下左右)一步一步去走,问走出地图的步数 如果是死循环,输出走进死循环之前的步数和死 ...
- POJ 1573 Robot Motion(BFS)
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12856 Accepted: 6240 Des ...
- Robot Motion 分类: POJ 2015-06-29 13:45 11人阅读 评论(0) 收藏
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11262 Accepted: 5482 Descrip ...
- POJ 1573 Robot Motion
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12978 Accepted: 6290 Des ...
- Poj OpenJudge 百练 1573 Robot Motion
1.Link: http://poj.org/problem?id=1573 http://bailian.openjudge.cn/practice/1573/ 2.Content: Robot M ...
- POJ1573——Robot Motion
Robot Motion Description A robot has been programmed to follow the instructions in its path. Instruc ...
- hdoj 1035 Robot Motion
Robot Motion Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- HDU-1035 Robot Motion
http://acm.hdu.edu.cn/showproblem.php?pid=1035 Robot Motion Time Limit: 2000/1000 MS (Java/Others) ...
随机推荐
- 坚持c++,真正掌握c++(2)
在c++中对c中的输入输出进行了扩展,採用了面向对象的设计方法设计了c++中的输入输出(IO).输入输出依照操作的对象分类可分为:1. 标准IO(对计算机的键盘或者显示器进行读写操作).2. 文件IO ...
- 基于Lucene3.5.0怎样从TokenStream获得Token
通过学习Lucene3.5.0的doc文档,对不同release版本号 lucene版本号的API修改做分析.最后找到了有价值的修改信息. LUCENE-2302: Deprecated TermAt ...
- 通过SSHFS在RHEL中安全的挂载远程Linux/UNIX目录或文件系统--转载
You can easily mount remote server file system or your own home directory using special sshfs and fu ...
- JavaScript函数的四种存在形态
函数的四种存在形态: 1.函数形态 2.方法形态 将函数赋值给某一个对象的成员,那么就称为方法 3.构造器形态 4.上下文形态 1.函数形态: var foo = function() { ale ...
- 第二篇:python基础之文件读写
python基础之文件读写 python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使 ...
- 处理移动端click事件300ms延迟的好方法—FastClick
下载地址:https://github.com/ftlabs/fastclick 1.click事件为什么有延迟? “...mobile browsers will wait approximatel ...
- Couchbase用的端口
文档首页: http://www.couchbase.com/documentation http://docs.couchbase.com/couchbase-manual-2.2/#prepara ...
- updatepanel局部刷新功能,实现注册时对用户名的检测
updatepanel的使用 通过将控件放入到updatepanel中,实现局部刷新. 前台代码:<asp:ScriptManager ID="ScriptManager1" ...
- Android之如何混淆代码和相关配置
昨天,客户想看一下目前项目开发到什么程度了,于是需要将项目签名打包成apk,结果打包的时候出错了,吃惊,什么情况.等成功打包以后,安装起来发现部分功能又报错了,囧,所幸最后还是解决了.在这里记录一下遇 ...
- 在iframe中获取iframe外的对象
parent.document.getElementById("dom ID"); $($(parent.document.getElementById("video-i ...