題目連結
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<iostream>
#include<cstdio>
#include<cstring>
#include<map>
using namespace std;
char direct[100][100], steps[100][100];
int vis[100][100];
int main()
{
int row, col, ent;
while(scanf("%d %d",&row,&col) && row){
scanf("%d",&ent);
map<char,int> p;
char st;
int step = 0, r = 0, c = ent - 1, flag = 0;
memset(vis,0,sizeof(vis));
for(int i=0;i < row;i++){
scanf("%s",direct[i]);
}
while(!vis[r][c]){
step++;
vis[r][c] = 1;
steps[r][c] = step;
switch(direct[r][c])
{
case 'N':
r -= 1;
break;
case 'S':
r += 1;
break;
case 'E':
c += 1;
break;
case 'W':
c -= 1;
}
if((r >= row || r < 0) || (c >= col || c < 0)){
flag = 1;
break;
}
}
if(!flag){
printf("%d step(s) before a loop of %d step(s)\n",steps[r][c]-1,step-steps[r][c]+1);
}
else{
printf("%d step(s) to exit\n",step);
}
}
return 0;
}