zoukankan      html  css  js  c++  java
  • (DFS)hdoj1198-Farm Irrigation

    题目链接

    DFS的简单应用,比较繁琐的是处理输入的英文字母。用并查集也可以做(可是笔者现在还没有掌握并查集,之前只用过一次,以后学会回来补上)

     1 #include<cstdio>
     2 #include<cstring>
     3 using namespace std;
     4 int m,n,typ[12][4]={{1,1,0,0},{1,0,1,0},{0,1,0,1},{0,0,1,1},{1,0,0,1},{0,1,1,0},{1,1,1,0},{1,1,0,1},{0,1,1,1},{1,0,1,1},{1,1,1,1},{0,0,0,0}};
     5 int dir[4][2]={{-1,0},{0,-1},{0,1},{1,0}},a[55][55],cnt;//这里处理的方法是将不同种类的管子标号为0——3,可能联通就是1,不然就是0
     6 char tem[50];
     7 void dfs(int si,int sj)
     8 {
     9     int x1,y1,kind=a[si][sj],z;
    10     a[si][sj]=11;//第一步就是先将这个格子初始化为第11种,即各个方向都不联通的格子
    11     for(int i=0;i<4;i++)
    12     {
    13         z=typ[kind][i];
    14         if(z==1)
    15         {
    16             x1=si+dir[i][0];
    17             y1=sj+dir[i][1];
    18             if(x1<0||x1>=m||y1<0||y1>=n||typ[a[x1][y1]][3-i]==0)//如果超出范围或无法联通则continue;
    19                 continue;
    20             else
    21             {
    22                 dfs(x1,y1);
    23             }
    24         }
    25     }
    26     return;
    27 }
    28 int main(){
    29 while(scanf("%d%d",&m,&n))
    30 {
    31     int i,j;
    32     cnt=0;
    33     if(m<0||n<0)
    34         break;
    35     else
    36     {
    37         for(i=0;i<m;i++)
    38         {
    39             scanf("%s",tem);
    40             for(j=0;j<n;j++)
    41             {
    42                 a[i][j]=tem[j]-'A';//对每个英文字母处理,之前已经为此建好了数组
    43             }
    44         }
    45         for(i=0;i<m;i++)
    46         {
    47             for(j=0;j<n;j++)
    48                 if(a[i][j]!=11)
    49             {
    50                 cnt++;//每个新看见的非11的格子均为可能联通一大块的整体。
    51                 dfs(i,j);
    52             }
    53         }
    54     }
    55     printf("%d
    ",cnt);
    56 }
    57 }
  • 相关阅读:
    python 学习笔记 数值型(1)
    python 学习笔记 标识符和变量(3)
    python 学习笔记 字符串(2)
    jsp+servlet+javaBean+Dao
    面试被问到岗时间,是越快越好吗?
    有赞多平台推广接入与测试
    HTTPS 加密、证书、签名与握手
    开发到底要不要自己做测试?
    我也曾找不到工作
    世界第三大浏览器正在消亡
  • 原文地址:https://www.cnblogs.com/quintessence/p/6029703.html
Copyright © 2011-2022 走看看