import java.util.*;
import java.math.*;
import java.io.*;
public class Main {
public static int n,m,ans[][],t,sx,sy,d[];
public static char map[][];
public static int dx[]={-1,1,0,0};
public static int dy[]={0,0,-1,1};
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
m=sc.nextInt();
sc.nextLine();
map=new char[n][m];
ans=new int[n][m];
for(int i=0;i<n;i++){
String s=sc.nextLine();
map[i]=s.toCharArray();
for(int j=0;j<m;j++)
if(map[i][j]=='*'){
map[i][j]='.';
sx=i;sy=j;
}
}
t=sc.nextInt();
sc.nextLine();
d=new int[t];
for(int i=0;i<t;i++){
char c=sc.nextLine().charAt(0);
if(c=='N')
d[i]=0;
else if(c=='S')
d[i]=1;
else if(c=='W')
d[i]=2;
else
d[i]=3;
}
bfs();
}
public static void bfs(){
Queue<int[]> q=new LinkedList<int[]>();
q.offer(new int[]{sx,sy,0});
while(!q.isEmpty()){
int[] cur=q.poll();
int cx=cur[0];
int cy=cur[1];
if(cur[2]==t){
continue;
}
int cd=d[cur[2]];
for(int i=1;i<Math.max(n,m);i++){
int nx=cx+dx[cd]*i;
int ny=cy+dy[cd]*i;
if(nx<0||ny<0||nx==n||ny==m||map[nx][ny]=='X')
break;
if(ans[nx][ny]==cur[2]+1)
continue;
ans[nx][ny]=cur[2]+1;
q.offer(new int[]{nx,ny,cur[2]+1});
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(ans[i][j]==t)
System.out.print('*');
else
System.out.print(map[i][j]);
}
System.out.println();
}
}
}
Java P1189 `SEARCH`
最新推荐文章于 2021-12-13 23:23:47 发布