很單純的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