标签:
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 12978 | Accepted: 6290 |
Description
Input
Output
Sample Input
3 6 5 NEESWE WWWESS SNWWWW 4 5 1 SESWE EESNW NWEEN EWSEN 0 0 0
Sample Output
10 step(s) to exit 3 step(s) before a loop of 8 step(s)
Source
#include <cstdio> #include <cstring> char s[15][15]; int n, m , start; int dis[15][15]; bool inGrid(int x, int y) { return 1 <= x && x <= n && 1 <= y && y <= m; } void solve() { memset(dis, 0, sizeof(dis)); int time = 0; int x = 1, y = start; while(1){ if(!inGrid(x, y)){ printf("%d step(s) to exit\n", time); break; } if(dis[x][y] != 0){ printf("%d step(s) before a loop of %d step(s)\n", dis[x][y]-1, time-dis[x][y]+1); break; } dis[x][y] = ++time; if(s[x][y] == ‘N‘) --x; else if(s[x][y] == ‘S‘) ++x; else if(s[x][y] == ‘E‘) ++y; else if(s[x][y] == ‘W‘) --y; } } int main() { while(scanf("%d%d%d", &n, &m, &start), n){ for(int i = 1; i <= n; ++i) scanf("%s", &s[i][1]); solve(); } return 0; }
标签:
原文地址:http://www.cnblogs.com/inmoonlight/p/5839519.html