HDU-1241 Oil Deposits

来源:互联网 发布:手机版的java api 编辑:程序博客网 时间:2024/05/23 23:22

题意:'@'表示油田,'*'表示墙,问n*m的地图上有几块油田?↑↓←→↖↙↗↘八个方向相连算同一块油田。

思路:BFS或DFS求连通块。遍历整个图每找到一次'@',进行一次BFS把油田改为'*',答案++。


#include<bits/stdc++.h>using namespace std;int n, m, dir[8][2] = {{1, 0}, {0, 1}, {0, -1}, {-1, 0}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};char  MAP[105][105];pair<int, int> NOW;void bfs(int sx,int sy){    queue<pair<int, int> > q;    q.push(make_pair(sx, sy));    while (!q.empty())    {        NOW = q.front();        q.pop();        for (int i = 0; i < 8; i++)        {            int X = NOW.first + dir[i][0], Y = NOW.second + dir[i][1];            if (X >= 0 && Y >= 0 && X < n && Y < m && MAP[X][Y] == '@')            {                MAP[X][Y] = '*';                q.push(make_pair(X, Y));            }        }    }}int main(){    while (~scanf("%d%d", &n, &m) && (n + m))    {        for (int i = 0; i < n; i++)        {            for (int j = 0; j < m; j++)            {                cin >> MAP[i][j];            }        }        int ans = 0;        for (int i = 0; i < n; i++)        {            for (int j = 0; j < m; j++)            {                if (MAP[i][j] == '@')                {                    bfs(i, j);                    ans++;                }            }        }        printf("%d\n",ans);    }    return 0;}/*1 1*3 5*@*@***@***@*@*1 8@@****@*5 5****@*@@*@*@**@@@@*@@@**@0 0*/


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新鲜桔子皮能泡水喝吗 桔孑皮泡水有什么功效 恃宠而骄 橘子皮 新鲜橘子皮 橘子皮有什么用 干橘子皮 橘子皮油 橘子皮水 橘子皮晒干 泡橘子皮 吃橘子皮 晒橘子皮 橘子皮的作用是什么 金桔皮能吃吗 橙皮泡水喝的功效与作用 喝桔子皮泡水有什么好处 灵芝泡水喝功效 陈皮泡水的功效与作用 陈皮生姜泡水喝的功效 橘子石手链一般多钱 雪花石 橘子船 橘子花 橘子花部长夫人1在线播放 开在心里的橘子花阅读答案 开在心里的橘子花 橘子花和栀子花的区别 橘子花花语 桔子苗批发 川红橘多少钱一斤 橘庆太 橘庆太抱女儿照片 庆元甜橘柚 橘核丸 茴香橘核丸 茴香橘核丸价格 茴香橘核丸为何停产 橘核丸对附睾炎的功效 橘梨一纱第三部 橘梨沙第一部在线播放 纱梨橘在线播放