• POJ 1562深搜判断连体油田个数


    http://poj.org/problem?id=1562

    大意:输入mp二维矩阵,规定‘@’连体的包括对角线为一片油田,统计共有多少油田。深搜方向数组dir设置8个方向遇到@继续搜索把当前位置赋值*避免重复遍历即可

    #include <iostream>
    #include <cmath>
    #include <cstdio>
    using namespace std;
    
    char mp[105][105];
    int m,n;
    int dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1}};//顺序从左上,上,右上,右,右下,下,左下,左开始搜索
    
    void dfs(int x,int y){
         int i,j;
         int xx,yy;
         mp[x][y]='*';
         for(i=0;i<8;i++){
            xx=x+dir[i][0];
            yy=y+dir[i][1];
            if(xx<0||yy<0||xx>m||yy>n){
                    continue;}//结束递归函数的边缘条件
            if(mp[xx][yy]=='@')
                dfs(xx,yy);
    
         }
    }
    int main(){
        int i,j;
        int a,b;
        int cnt;
        while(scanf("%d%d",&m,&n)!=EOF&&m&&n)//m行
        {
            cnt=0;
            for(i=0;i<m;i++){
                scanf("%s",mp[i]);//注意scanf%s字符串格式读取会自动吃掉换行符而%c不行需要用getchar()吃掉
            }
            for(i=0;i<m;i++){
                for(j=0;j<n;j++){
                    if(mp[i][j]=='@'){
                      dfs(i,j);
                      cnt++;
                    }
                }
                }
       printf("%d
    ",cnt);
        }
    
    
       return 0;
       }
    


  • 相关阅读:
    c语言 malloc和free的实现
    gdb调试命令总结
    pycharm使用教程
    flask--relationship
    安装部署问题
    Flask的request.form和request.data有什么区别
    装饰器
    flask 权限
    flask--session
    数据库-触发器
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7256719.html
Copyright © 2020-2023  润新知