【杭电】[1241]Oil Deposits

文章字数:147

问题描述

Oil Deposits

问题分析

问几块石油区域
需要注意的是只要八个方向上有石油
那么这片区域就视作连通的
所以dfs进行搜索填充就好

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<stdio.h>
int move[2][8]= {{1,1,1,0,0,-1,-1,-1},{0,1,-1,1,-1,0,1,-1}};
char map[120][120];
int H,W;
void dfs(int n,int m) {
    map[n][m]='*';
    for(int i=0; i<8; i++) {
        int tn=n+move[0][i],tm=m+move[1][i];
        if(tn>=0&&tn<H&&tm>=0&&tm<W&&map[tn][tm]=='@')
            dfs(tn,tm);
    }
}
int main() {
    while(scanf("%d %d",&H,&W),H||W) {
        for(int i=0; i<H; i++)
            scanf("%s",map[i]);
        int cnt=0;
        for(int i=0; i<H; i++) {
            for(int j=0; j<W; j++)
                if(map[i][j]=='@') {
                    cnt++;
                    dfs(i,j);
                }
        }
        printf("%d\n",cnt);
    }
    return 0;
}

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...