zoukankan      html  css  js  c++  java
  • zoj 1709 dfs

    链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1709

    题意:*代表地里没有油,@代表地里有油。某块地如果在它的相邻八个方向上的地里也有油,那么它们是属于同一块油田,求油田数。

    思路:从某个有油的田开始搜,搜过了就标记为*,以免后面再搜,然后统计。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    
    int m,n;
    const int maxn=102;
    char grid[maxn][maxn];
    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)
    {
        grid[x][y]='*';
        int xx,yy;
        for(int i=0;i<8;i++)
        {
            xx=x+dir[i][0];yy=y+dir[i][1];
            if(xx>=0 && xx<=m-1 &&yy>=0 && yy<=n-1 && grid[xx][yy]=='@')
               dfs(xx,yy);
    //        if(xx<0 || xx>=m || yy<0 || yy>=n) continue;
    //        if(grid[xx][yy]=='@') dfs(xx,yy);
        }
    }
    
    int main()
    {
        int cnt;
        while(scanf("%d%d",&m,&n) && m)
        {
            cnt=0;
            scanf("%d%d",&m,&n);
            if(m==0) break;
    
            for(int i=0;i<m;i++)
                scanf("%s",grid[i]);
            for(int i=0;i<m;i++)
               for(int j=0;j<n;j++)
                   if(grid[i][j]=='@')
                   {
                       dfs(i,j);
                       cnt++;
                   }
            printf("%d\n",cnt);
        }
        return 0;
    }
  • 相关阅读:
    nginx用户统计
    mysql用户和授权
    memcache操作
    nginx memcache缓存
    memcached安装启动
    Unity 菜单拓展
    用C#创建XML, XML格式化输出
    解析swf文件头,获取flash的原始尺寸
    kinematic与static刚体不会触发任何接触回调
    git使用
  • 原文地址:https://www.cnblogs.com/54zyq/p/3077436.html
Copyright © 2011-2022 走看看