• 1249 Lake Counting


    本题,我用了两种方法,个人认为DFS要更方便一点,至少从代码量来看是这样的

    #include<bits/stdc++.h>
    using namespace std;
    struct node{
        int x,y;
    }que[12110];
    int fx[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};//方向 
    char mp[120][120];//地图 
    int f,r;//队首队尾 
    int n,m;//行列 
    int ans;//水洼个数 
    
    void pr(){//测试函数 
        cout<<"---------"<<endl;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                cout<<mp[i][j];
            }
            cout<<endl;
        }
    }
    
    void dfs(int x,int y){//DFS方法 
        for(int i=0;i<8;i++){
            int sx=x+fx[i][0];
            int sy=y+fx[i][1];
            
            if(sx>=0 && sx<n && sy>=0 && sy<m && mp[sx][sy]=='W'){
                mp[sx][sy]='.';
                dfs(sx,sy);
            }
        }
    }
    
    void bfs(int x,int y){//BFS方法 
        f=r=1;
        que[r].x=x , que[r].y=y , mp[x][y]='.';
        
        while(f<=r){
            node t;
            t.x=que[f].x , t.y=que[f].y;
            
            for(int i=0;i<8;i++){
                int nx=t.x+fx[i][0];
                int ny=t.y+fx[i][1];
                
                if(nx>=0 && nx<n && ny>=0 && ny<m && mp[nx][ny]=='W'){
                    mp[nx][ny]='.';
    //                pr();
                    r++;
                    que[r].x=nx;
                    que[r].y=ny;
                }
            }
            f++;
        }
    }
    int main(){
        cin>>n>>m;
        for(int i=0;i<n;i++)
            cin>>mp[i];
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(mp[i][j]=='W'){
                    ans++;
    //                dfs(i,j);
                    bfs(i,j);
                }
            }
        }
    //    pr();
        cout<<ans<<endl;
        return 0;
    }

     第65、66行,比较DFS与BFS

  • 相关阅读:
    C语言 指针
    C语言 字符串指针和字符串数组使用区别
    perl和python3 同时打开两个文件
    Java反射初探123456789
    电脑打不开CHM格式文件解决办法
    Spring启动报8080端口被占用问题
    SpringBoot复习
    项目开发文档编写规范
    Java核心编程-第一卷
    转载——类文件系列
  • 原文地址:https://www.cnblogs.com/qwn34/p/13772907.html
Copyright © 2020-2023  润新知