题解
2024-03-17 11:58:22
发布于:浙江
13阅读
0回复
0点赞
思路十分甚至有九分的简单(
#include<iostream>
using namespace std;
//const N=109;
char arr[109][109];
bool vis[109][109];
int water=0,dir[8][2]={{0,1},{1,0},{0,-1},{-1,0},{-1,-1},{1,1},{1,-1},{-1,1}};
int m,n;
void dfs(int x,int y){
vis[x][y]=1;
for(int i=0;i<8;i++){
int nx=x+dir[i][0];
int ny=y+dir[i][1];
if(nx>=1&&ny>=1&&nx<=m&&ny<=n&&vis[nx][ny]==0&&arr[nx][ny]=='W'){
vis[nx][ny]=1;
dfs(nx,ny);
}
}
}
int main(){
cin>>m>>n;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cin>>arr[i][j];
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(arr[i][j]=='W'&&vis[i][j]==0){
dfs(i,j);
water++;
}
}
}
cout<<water;
return 0;
}
这里空空如也
有帮助,赞一个