码迷,mamicode.com
首页 > 其他好文 > 详细

UVA - 572_Oil Deposits(FloodFill)

时间:2019-02-21 12:45:40      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:book   mes   max   void   连通块   pac   its   using   ==   

要求:计算二维中连通块个数。

#include<bits/stdc++.h>
using namespace std;

const int maxn = 100 + 3;
const int maxm = 100 + 3;
int m, n;
char buf[maxm][maxn];
bool book[maxm][maxn];


void floodfill(int r, int c)
{
    book[r][c] = true;
    for(int dr = -1; dr < 2; dr++){
        for(int dc = -1; dc < 2; dc++){
            int rr = r + dr, cc = c + dc;
            if((rr < m && rr >= 0 && cc < n && cc >= 0) && buf[rr][cc] == @ && !book[rr][cc]){
                floodfill(rr, cc);
            }
        }
    }
}

int main()
{
    while(cin >> m >> n && m && n){
        memset(book, 0, sizeof(book));
        for(int i = 0; i < m; i++){
            scanf("%s", buf[i]);
        }
        int cnt = 0;
        for(int i = 0; i < m; i++){
            for(int j = 0; j < n; j++){
                if(buf[i][j] == @ && !book[i][j]){
                    floodfill(i, j);
                    cnt++;
                }
            }
        }
        cout << cnt << endl;
    }
}

收获:

递归框架可以有两种类型:

  1. 显式写明递归边界,即递归中的返回条件。

  2. 限定进入递归的条件,而省掉返回条件。

UVA - 572_Oil Deposits(FloodFill)

标签:book   mes   max   void   连通块   pac   its   using   ==   

原文地址:https://www.cnblogs.com/sanshi-2018/p/10411493.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!