文档介绍:该【东方博宜OJ1897红与黑题解】是由【鼠标】上传分享,文档一共【3】页,该文档可以免费在线阅读,需要了解更多关于【东方博宜OJ1897红与黑题解】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。东⽅博宜OJ1897:【⼊门】红与⿊题解
深搜基础题,⽤string存储即可。
50pts:(下标为1⽤惯了)
#include
#include
#include
using namespace std;
string a[21];
int w,h,vis[21][21],cnt=0;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void dfs(int x,int y){
vis[x][y]=1;
cnt++;
for(int i=0;i<4;i++){
int nx,ny;
nx=x+dx[i];
ny=y+dy[i];
if(nx>=1&&nx<=h&&ny>=1&&ny<=w&&!vis[nx][ny]&&a[nx][ny]!='#'){
vis[nx][ny]=1;
dfs(nx,ny);
}
}
}
int main(){
cin>>w>>h;
int sx,sy;
for(int i=1;i<=h;i++){
cin>>a[i];
for(int j=1;j<=w;j++){
if(a[i][j]=='@'){
sx=i;
sy=j;
}
}
}
dfs(sx,sy);
cout<
return 0;
return 0;
}
Processing100pts: math: 100%
#include
#include
#include
using namespace std;
string a[21];
int w,h,vis[21][21],cnt=0;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void dfs(int x,int y){
vis[x][y]=标1记;//
cnt++;
for(int i=0;i<4;i++){
int nx,ny;
nx=x+dx[i];
ny=y+dy[i];
if(nx>=1&&nx<=h&&ny>=0&&ny<=w-1&&!vis[nx][n判y断]&能&不a[能nx⾛][ny]!='#'){//
vis[nx][ny]=1;
dfs(nx,ny);
}
}
}
int main(){
cin>>w>>h;
int sx,sy;
for(int i=1;i<=h;i++){
cin>>a[i];
for(int j=0;j<=w-1;j++){
if(a[i][ j确]=定=开'@始')位{//置
sx=i;
sy=j;
}
}
}
dfs(sx,sy);
cout<
return完 0结;/撒/ 花
}
Processing math: 100%