社区讨论
我感觉我这么搜是最舒服的
P1189[COI 2001] SEARCH参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @m5ascbfh
- 此快照首次捕获于
- 2024/12/30 16:36 去年
- 此快照最后确认于
- 2024/12/30 17:12 去年
CPP
#include<bits/stdc++.h>
using namespace std;
int n,r,c,x,y;string s[1010];char a[55][55];bool mark[55][55]={0},vis[1010][55][55]={0};
void dfs(int deep,int x,int y){
if(vis[deep][x][y])return;
if(x>r||y>c||x<1||y<1||mark[x][y]){vis[deep][x][y]=1;return;}
if(deep>n){a[x][y]='*';vis[deep][x][y]=1;return;}
if(s[deep][0]=='N'){dfs(deep+1,x-1,y);dfs(deep,x-1,y);}
if(s[deep][0]=='S'){dfs(deep+1,x+1,y);dfs(deep,x+1,y);}
if(s[deep][0]=='W'){dfs(deep+1,x,y-1);dfs(deep,x,y-1);}
if(s[deep][0]=='E'){dfs(deep+1,x,y+1);dfs(deep,x,y+1);}
vis[deep][x][y]=1;}
int main(){
cin>>r>>c;
for(int i=1;i<=r;i++){
string s1;cin>>s1;
for(int j=0;j<=c-1;j++){
a[i][j+1]=s1[j];
if(a[i][j+1]=='X')mark[i][j+1]=1;
if(a[i][j+1]=='*')x=i,y=j+1,a[i][j+1]='.';}}
cin>>n;for(int i=1;i<=n;i++)cin>>s[i];dfs(1,x,y);
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
cout<<a[i][j];}cout<<'\n';}
return 0;}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...