机器人

机器人

问题描述
机器人按照给定的指令在网格中移动,指令有以下四种:
N 向北(上)移动
S 向南(下)移动
E 向东(右)移动
W 向西(左)移动
如下图所示,在网格1中,机器人初始位于网格第1行第5列,按照网格中的指令,机器人在走出网格前需要10步。在网格2中,机器人初始位于网格第1行第1列,按照网格中的指令,机器人将进入一个循环,永远走不出网格,且在进入循环前走了11步。
在这里插入图片描述

假定机器人初始时刻总是在网格第一行的某一列上,请你写一个程序确定机器人能否走出网格,并输出走出网格或进入循环需要的步数。

输入说明
输入数据第一行为空格分隔的3个整数,分别表示网格行数N、列数M和初始时刻机器人所在的列C(从网格最左边开始,以1为基准计数)。每个网格的行数和列数均不超过20。接下来是N行指令,指令只包含N,S,E和W四种,所有指令之间没有空格。

输出说明
如果机器人可以走出网格,输出"out "加上走出网格需要的步数;如果机器人进入循环不能走出网格,输出"loop "以及进入循环前走的步数。

输入样例1

3 6 5
NEESWE
WWWESS
SNWWWW

输出样例

out 10

输入样例2

4 5 1
SESWE
EESNW
NWEEN
EWSEN

输出样例

loop 11

源码如下

#include<stdio.h>
int main()
{
 	char grid[20][20];//定义一个20*20的最大数组 
	for(int i=0;i<20;i++)//初始化数组为1 
 	for(int j=0;j<20;j++)
 	grid[i][j]=1;
/**************************函数参数********************************************
*xlong:	   定义数组宽度 
*xwide:	   定义数组长度
*xstart:	起始位置机器人位于的行数 
*position:	起始位置机器人位于列数
*count:		机器人走过的步数 
*******************************************************************************/
 	int xlong,xwide,xstart,xposition,count;
	 xstart=0;
 	 count=0;
	 scanf("%d%d%d",&xlong,&xwide,&xposition);
 	getchar();//消除回车 
	for(int i=0;i<xlong;i++)//输入方向地图 
 	{
	 for(int j=0;j<xwide;j++)
		grid[i][j]=getchar();
	getchar();//同理消除回车 
	}
 	
 	xposition=xposition-1;//数组从0开始,因此减一 
 	/*机器人路过地方留下标志1,再次遇到即为走出地图或者进入循环*/ 
 	while(1)
 	{
 		if(grid[xstart][xposition]=='N'&&grid[xstart][xposition]!=1){
 			count++;
 			grid[xstart][xposition]=1;
 			xstart--;
		 }
		else if(grid[xstart][xposition]=='S'&&grid[xstart][xposition]!=1){
 			//xposition--;
 			count++;
 			grid[xstart][xposition]=1;
 			xstart++;
		}		
		else if(grid[xstart][xposition]=='E'&&grid[xstart][xposition]!=1){
 			//xstart++;
 			count++;
 			grid[xstart][xposition]=1;
 			xposition++;
	 	}
		else if(grid[xstart][xposition]=='W'&&grid[xstart][xposition]!=1){
 			//xstart--;
 			count++;
 			grid[xstart][xposition]=1;
 			xposition--;
	 	}		
	 	else
	 	break;
	} 
	/*判断是走出还是进入循环*/ 
	if(xstart>(xlong-1)||xstart-1<0||xposition>(xwide-1)||xposition<0)
	printf("out %d",count);
	else
	printf("loop %d",count);
	
	return 0;
}
@ RoboMaster!十兮
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页