搜索入门——踏青

include<bits/stdc++.h>

using namespace std;
char s[110][110];//地图
int n,m,sum;//n行,m列
int dir[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};//右、上、左、下
int vis[110][110];//标志,遍历过就设为1,没有遍历的话初始值为0
void dfs(int x,int y){//深搜
int tx,ty;//在x、y基础上新移动的点
for(int i=0;i<4;i++){
tx=x+dir[i][0];
ty=y+dir[i][1];
if(tx>=0&&tx<n&&ty>=0&&ty<m&&s[tx][ty]'#'&&vis[tx][ty]0){
vis[tx][ty]=1;
dfs(tx,ty);//在新的点上继续深搜
}
}
}
int main(){
cin>>n>>m;
sum=0;
for(int i=0;i<n;i++){
cin>>s[i];
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(s[i][j]=='#'&&!vis[i][j]){
vis[i][j]=1;
dfs(i,j);
sum++;
}
cout<<sum;
return 0;
}

posted @ 2020-10-02 22:13  珍惜时光,辉煌拔尖  阅读(44)  评论(0编辑  收藏  举报