20求助!
查看原帖
20求助!
1022472
C_Boa楼主2024/5/2 14:29
#include<bits/stdc++.h>
using namespace std;
bool vis[1010][1010];//vis数组
char a[1010][1010];
int n,m,ans=0;//ans
int dir[8][2]={{0,1},{-1,0},{1,0},{0,-1},{1,-1},{1,1},{-1,1},{-1,-1}};
void dfs(int x,int y){
    vis[x][y]=1;//a[x][y]已搜索过
	int nx,ny;
	for(int i=0;i<8;i++){
	    nx=x+dir[i][0];
        ny=x+dir[i][1];
	    if(nx>x||ny>y||nx<1||ny<1||vis[x][y]==1||a[x][y]=='.'){
	        continue;
	    }
	    dfs(nx,ny);
	}
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(a[i][j]=='W'&&vis[i][j]==0){//如果未搜
                dfs(i,j);//dfs
                ans++;
            }
        }
    }
    cout<<ans;//输出
    return 0;
}

看过我以前的帖子,你肯定知道接下来我要说啥了:

啊?

2024/5/2 14:29
加载中...