#include<iostream>
#include<cstdio>
#include<map>
using namespace std ;
#define pf printf
int data[1001][1001] ;
char str[1001],ch ;
int r,c ,d;
int x , y;
map<int,char> mp ;
void travers()
{
while(cin>>ch)
{
if(ch=='Q')
break ;
else if(ch=='R')
{
d-- ;
if(d<0)
d =3 ;
}
else if(ch=='L')
{
d++ ;
if(d>3)
d =0 ;
}
else if(ch=='F')
{
if(d==0)
{
if(x-1>=1 && data[x-1][y])
{
x-- ;
}
}
else if(d==2)
{
if(x+1<=r && data[x+1][y])
x++ ;
}
else if(d==1)
{
if(y-1>=1 && data[x][y-1])
y-- ;
}
else if(d==3)
{
if(y+1<=c && data[x][y+1])
y++ ;
}
}
}
}
int main()
{
int test ;
cin>>test ;
while(test--)
{
mp[0] = 'N' ;
mp[1] = 'W' ;
mp[2] = 'S' ;
mp[3] = 'E' ;
cin>>r>>c ;
getchar() ;
for(int i=1 ; i<=r ; i++)
{
gets(str) ;
for(int j=0 ; j<c ; j++)
{
if(str[j]==' ')
data[i][j+1] = 1 ;
else
data[i][j+1]=0;
}
}
d =0 ;
cin>>x>>y ;
travers() ;
pf("%d %d %c\n",x,y,mp[d]) ;
if(test)
pf("\n") ;
}
}
#include<cstdio>
#include<map>
using namespace std ;
#define pf printf
int data[1001][1001] ;
char str[1001],ch ;
int r,c ,d;
int x , y;
map<int,char> mp ;
void travers()
{
while(cin>>ch)
{
if(ch=='Q')
break ;
else if(ch=='R')
{
d-- ;
if(d<0)
d =3 ;
}
else if(ch=='L')
{
d++ ;
if(d>3)
d =0 ;
}
else if(ch=='F')
{
if(d==0)
{
if(x-1>=1 && data[x-1][y])
{
x-- ;
}
}
else if(d==2)
{
if(x+1<=r && data[x+1][y])
x++ ;
}
else if(d==1)
{
if(y-1>=1 && data[x][y-1])
y-- ;
}
else if(d==3)
{
if(y+1<=c && data[x][y+1])
y++ ;
}
}
}
}
int main()
{
int test ;
cin>>test ;
while(test--)
{
mp[0] = 'N' ;
mp[1] = 'W' ;
mp[2] = 'S' ;
mp[3] = 'E' ;
cin>>r>>c ;
getchar() ;
for(int i=1 ; i<=r ; i++)
{
gets(str) ;
for(int j=0 ; j<c ; j++)
{
if(str[j]==' ')
data[i][j+1] = 1 ;
else
data[i][j+1]=0;
}
}
d =0 ;
cin>>x>>y ;
travers() ;
pf("%d %d %c\n",x,y,mp[d]) ;
if(test)
pf("\n") ;
}
}
No comments:
Post a Comment