标签:
| 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