zoukankan      html  css  js  c++  java
  • 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语言总结(6)
    作业十二总结
    作业十一总结
    实验十总结
    实验九总结
    第一次附加作业
  • 原文地址:https://www.cnblogs.com/qwn34/p/13772907.html
Copyright © 2011-2022 走看看