模拟题,水题
//Memory Time
//268K 0MS
#include<iostream>
using namespace std;
char map[10][10];
char mapState[10][10];
int main()
{
int rows, columns;
int columnsStart;
while(cin>>rows>>columns>>columnsStart
&& !(rows == 0 && columns == 0 && columnsStart == 0))
{
for(int i = 0 ; i < rows; i++)
for(int j = 0; j < columns; j++)
{
cin>>map[i][j];
mapState[i][j] = 2;
}
int row = 0;
int col = columnsStart - 1;
int stepA = 0, stepB = 0;
while(row >= 0 && row < rows && col >= 0 && col < columns //边界1:没有走出矩形
&& mapState[row][col] > 0) //边界2:不能第三次走过某一个格子
{
if(mapState[row][col] == 2)
{
stepA++;
}else if(mapState[row][col] == 1)
{
stepA--;
stepB++;
}
mapState[row][col]--;
if(map[row][col] == 'N')
row--;
else if(map[row][col] == 'S')
row++;
else if(map[row][col] == 'W')
col--;
else if(map[row][col] == 'E')
col++;
}
if(stepB == 0)
cout << stepA << " step(s) to exit" << endl;
else
cout << stepA << " step(s) before a loop of "
<< stepB << " step(s)" <<endl;
}
return 0;
}