POJ1753——Simulation
#include<iostream>
using namespace std;
char Grid[10][10];
int steps[10][10];
int main()
{
int rows, column, entry;
while (1)
{
cin >> rows >> column >> entry;
for (int i = 0; i < rows; i++)
for (int j = 0; j < column; j++)
cin >> Grid[i][j];
int r = 0, c = entry - 1; //entry is the number of the columns in the grid
int count = 0; //count is the total number of steps
while (Grid[r][c])
{
count++;
steps[r][c] = count; //update the step[r][c]
switch (Grid[r][c])
{
case 'N':r--; break;
case 'W':c--; break;
case 'S':r++; break;
case 'E':c++; break;
}
if (steps[r][c]) //once steps[r][c] > 0
{ //means (somewhere only they known) Grid[r][c] has already been
cout << steps[r][c]-1 << " step(s) before a loop of " //Notice the number
<< count - steps[r][c] + 1 << " step(s) " << endl; //of steps and loop steps
break;
}
}
if (!Grid[r][c]) //robot has exit the Grid
cout << count << " step(s) to exit " << endl;
if (!rows&&!column&&!entry)
break;
memset(Grid, 0, sizeof(Grid)); //sizeof(Grid)=100 * sizeof(char)
memset(steps, 0, sizeof(steps)); //reset these array = 0
}
}