当前位置:   article > 正文

搜索算法(算法竞赛、蓝桥杯)--DFS与BFS水坑计数(洪水覆盖问题)_池塘问题bfs洛谷

池塘问题bfs洛谷

1、B站视频链接:B10 DFS 水坑计数_哔哩哔哩_bilibili

题目链接:[USACO10OCT] Lake Counting S - 洛谷

 

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N=1010;
  4. int n,m;
  5. char g[N][N];
  6. int dx[8]={-1,-1,-1,0,1,1,1,0};//注意把方向探照灯的细节
  7. int dy[8]={-1,0,1,1,1,0,-1,-1};
  8. void dfs(int x,int y){
  9. g[x][y]='.';//搜到'W'的地方全部变成'.'标记判重
  10. for(int i=0;i<8;i++){
  11. int a=x+dx[i],b=y+dy[i];
  12. if(a<0||a>=n||b<0||b>=m)continue;
  13. if(g[a][b]=='.')continue;
  14. dfs(a,b);
  15. }
  16. }
  17. int main(){
  18. cin>>n>>m;
  19. for(int i=0;i<n;i++){
  20. scanf("%s",g[i]);//逐行读入字符串
  21. }
  22. int ans=0;
  23. for(int i=0;i<n;i++){
  24. for(int j=0;j<m;j++){
  25. if(g[i][j]=='W'){
  26. ans++,dfs(i,j);
  27. }
  28. }
  29. }
  30. cout<<ans<<endl;
  31. return 0;
  32. }

2、用BFS解决问题

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/476105
推荐阅读
相关标签
  

闽ICP备14008679号