很單純的simulation題,就是照著規則去模擬。
CODE
#include <stdio.h> #include <string.h> #define MAX 50 #define MAX_LEN 100 int main(){ int i, len; int mx, my, x, y, dir, t[MAX+1][MAX+1]; int dx[4]={0, 1, 0, -1}, dy[4]={1, 0, -1, 0}; char c, cmd[MAX_LEN], nesw[4]="NESW"; scanf("%d %d", &mx, &my); while( scanf("%d %d %c", &x, &y, &c) != EOF ){ scanf("%s", cmd); for(i=0; i<4; i++) if( c == nesw[i] ) dir = i; len = strlen(cmd); for(i=0; i<len; i++){ switch ( cmd[i] ){ case 'L': dir--; break; case 'R': dir++; break; case 'F': while( dir < 0 ) dir += 4; dir = dir % 4; if( (x+dx[dir])<0 || (x+dx[dir])>mx || (y+dy[dir])<0 || (y+dy[dir])>my ){ if( t[x][y] != 1 ){ t[x][y] = 1; i = len; } } else{ x += dx[dir]; y += dy[dir]; } break; default: break; }/*switch*/ }/*i*/ while( dir < 0 ) dir += 4; dir = dir % 4; printf("%d %d %c", x, y, nesw[dir]); if( i > len ) printf(" LOST"); printf("\n"); }/*while*/ exit(0); }
No comments:
Post a Comment