作为一名萌新,写一个暴力解法,特别好理解
洛谷题,写得特别爽
#include<iostream>
using namespace std;
int shuzu[101][101];
int n,m,ans;
void dfs(int i,int j,int k){
if(i>n||j>m||shuzu[i][j]==0)return;
else shuzu[i][j]=0;
dfs(i-1,j-1,0);
dfs(i-1,j,0);
dfs(i-1,j+1,0);
dfs(i,j-1,0);
dfs(i,j+1,0);
dfs(i+1,j-1,0);
dfs(i+1,j,0);
dfs(i+1,j+1,0);
if(k==1)ans++;
}
int main(){
char a;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a;
if(a=='W')
shuzu[i][j]=1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(shuzu[i][j]==1)
dfs(i,j,1);
}
}
cout<<ans;
}
每次DFS在循环里面才进行加答案,其他的都只是类似扩散一样标记而已。
AC了
(●'◡'●)
觉得是新手最好理解的