// UVa 10116 - Robot Motion
#include <iostream>
#include <string>
#include <string.h>
#include <stdio.h>
using namespace std;
int n, m, j, i;
int mat[10][10];
string dir[10];
void move() {
switch (dir[i][j]) {
case 'N':
i--;
break;
case 'S':
i++;
break;
case 'W':
j--;
break;
case 'E':
j++;
break;
}
}
int main() {
while ((cin >> n >> m >> j) && n && m && j) {
i = 0;
j--;
for (int z = 0; z < n; z++)
cin >> dir[z];
memset(mat, 0, sizeof(mat));
mat[i][j] = 1;
int k;
bool out = false;
for (k = 2;; k++) {
move();
if (i < 0 || j < 0 || i >= n || j >= m) {
out = true;
break;
}
if (mat[i][j])
break;
mat[i][j] = k;
}
if (out)
printf("%d step(s) to exit\n", k - 1);
else
printf("%d step(s) before a loop of %d step(s)\n", mat[i][j] - 1, k - mat[i][j]);
}
return 0;
}
Tuesday, June 16, 2015
UVa 10116 - Robot Motion
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment