zoukankan      html  css  js  c++  java
  • 种子填充(flood fill)

    针对UVa 572

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 const int maxn = 100 + 5;
     6 //m 行 n 列
     7 // pic存图,idx就是visit数组 
     8 char pic[maxn][maxn];
     9 int m,n,idx[maxn][maxn];
    10 
    11 void dfs(int r,int c,int id)
    12 {
    13     if(r<0 || r>=m || c<0 || c>= n) return ;//出界
    14     if(idx[r][c]>0 || pic[r][c]!='@')    return ;
    15     idx[r][c] = id;//连通分量编号 
    16     
    17     //下面的循环可以写一个方向数组进行修改 
    18     for(int dr = -1;dr <= 1;dr ++)
    19         for(int dc = -1;dc <= 1;dc ++) 
    20             if(dr != 0 || dc != 0)
    21                 dfs(r+dr,c+dc,id); 
    22 }
    23 
    24 
    25 
    26 int main()
    27 {
    28     while(scanf("%d%d",&m,&n) == 2 && m && n)
    29     {
    30         for(int i = 0;i < m;i ++)
    31             scanf("%s",pic[i]);
    32         memset(idx,0,sizeof(idx));
    33         int cnt = 0;
    34         for(int i = 0;i < m;i ++)
    35         {
    36             for(int j = 0;j < n;j ++)
    37             {
    38                 if(idx[i][j]==0&&pic[i][j] == '@')
    39                 {
    40                     dfs(i,j,++cnt);
    41                 }
    42             }
    43         }
    44         cout << cnt << endl;
    45     }
    46     return 0;
    47 } 
  • 相关阅读:
    MVC过滤器
    MVC自带的校验
    FPGA简单概述
    CAN总线扩展数据帧介绍
    简述人工智能发展的先决条件
    CAN总线标准帧
    CAN总线应用
    CAN总线优点
    CAN总线概述
    高速PCB设计注意事项
  • 原文地址:https://www.cnblogs.com/Asurudo/p/9978937.html
Copyright © 2011-2022 走看看