有几个水洼(DFS)

 

 

 

 

 

 

复制代码
#include <iostream>  
#include<cstdio>  
using namespace std;  
#define maxn 105  
char field[maxn][maxn];  
int n,m;  
void dfs(int x,int y)  
{  
     field[x][y]='.';//注意要改成. 
     for(int dx=-1;dx<=1;dx++)  
        for(int dy=-1;dy<=1;dy++) //八连通,八个方向都要dfs 
         {
             int xx=x+dx,yy=y+dy;
             if(xx>=0&&xx<n&&yy<m&&yy>=0&&field[xx][yy]=='W') dfs(xx,yy);
         }
}  
void solve()  
{  
     int ans=0;
     for(int i=0;i<n;i++)
         for(int j=0;j<m;j++)
             if(field[i][j]=='W') 
             {
                 dfs(i,j);
                 ans++;//dfs几次就代表有几个水洼 
             }
     
     cout<<ans;
}  
int main()  
{  
    
    cin>>n>>m;
    for(int i=0;i<n;i++)
         for(int j=0;j<m;j++)
             cin>>field[i][j];
    solve();
    return 0; 
}  
复制代码

 

posted @   Tomorrow1126  阅读(179)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示