题目大意
给一个地图,由ESWN(东南西北)组成,机器人根据脚下的指令移动,求如果机器人能走出地图,走的步数多少,如果不能走出,求每绕一圈的步数和绕圈之前走的步数。
不是图的题目,直接做就行。
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
char map1[15][15];
int flag[15][15];
int main()
{
int n,m,k;
int x,y;
while(scanf("%d%d",&n,&m)&&n)
{
int sum1=0,sum2=0;
memset(flag,0,sizeof(flag));
memset(map1,0,sizeof(map1));
scanf("%d",&k);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++) { cin>>map1[i][j];
}
}
x=1;
y=k;
while(x<=n&&x>=1&&y<=m&&y>=1)
{
if(map1[x][y]=='E')
{
flag[x][y]++;
y++;
sum2++;
}
else if(map1[x][y]=='W')
{
flag[x][y]++;
y--;
sum2++;
}
else if(map1[x][y]=='S')
{
flag[x][y]++;
x++;
sum2++;
}
else if(map1[x][y]=='N')
{
flag[x][y]++;
x--;
sum2++;
}
if(flag[x][y]==1)
{
sum1++;
}
else if(flag[x][y]>1)
break;
}
if(sum1>0)
printf("%d step(s) before a loop of %d step(s)\n",sum2-sum1*2,sum1);
else
printf("%d step(s) to exit\n",sum2);
}
return 0;
}