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) ...
随机推荐
- MyEclipse_6.0.1GA_E3.3.1集成版下载地址
因在开发中经常使用到myeclipse 对比相关版本,还是觉得6.0 –6.5 比较适合开发,其他的开发起来比较卡,下面是下载地址 MyEclipse_6.0.1GA_E3.3.1集成版下载地址: ...
- java中关于public class
在编写类的时候可以使用两种方式定义类: public class定义类: class定义类: 1,如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完 ...
- Lamp环境部署指南
1.安装apache 1)安装httpd: yum install httpd 2)启动httpd服务 service httpd start 2.安装mysql 1)安装mysql yum inst ...
- css(动画,过渡,转换)
css3动画 @keyframes 规定动画,必须定义动画的名称,动画时长的百分比,一个或多个css样式属性 以百分比来规定改变发生的时间,或者通过关键词"from"和" ...
- 监听polygon变化
Polygons are made of Paths which are just MVCArrays (in this case, they're a list of LatLng objects) ...
- Android Parcelable Trans byte[]
思路: http://stackoverflow.com/questions/10898116/make-custom-parcelable-containing-byte-array 谢谢, 这位外 ...
- Oracle (内连接)
例如: 表xuesheng id name 1, Jack 2, Tom 3, Kity 4, nono 表kaoshi id grade 1, 56 2, 76 11, 89 内连接(显示两表匹配的 ...
- Long型整数,缄默溢出
/** 长整数问题 @author husky */ public class LongDemo { public static void main(String[] args) { /** * 问题 ...
- 【深度解析】Google第二代深度学习引擎TensorFlow开源
作者:王嘉俊 王婉婷 TensorFlow 是 Google 第二代深度学习系统,今天宣布完全开源.TensorFlow 是一种编写机器学习算法的界面,也可以编译执行机器学习算法的代码.使用 Tens ...
- c读写文件相关
1.打开文件: 函数原型: FILE * fopen(const char * path,const char * mode); 返回值: 文件顺利打开后,指向该流的文件指针就会被返回.如果文件打开失 ...