当前位置: 代码迷 >> 综合 >> depth first search 入门例题(油田的个数)
  详细解决方案

depth first search 入门例题(油田的个数)

热度:63   发布时间:2023-12-12 14:24:58.0

B - Oil Deposits POJ - 1562

题意: 输入数据有多组,输入两个整数,表示数组的行和列,下面输出,一个二维的字符串数组,仅包含‘@’和 ‘*’ 两种字符,相邻的‘@’ 表示 同一个油田,求总共个几个油田。
这道题也是dfs 的很简单的题型,也是一个原始的模板。
代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 110
using namespace std;char mapp[N][N];// 要搜索的地图
int m, n;
int fx[10] = {
   0, 0, 1, -1, 1, 1, -1, -1};
int fy[10] = {
   1, -1, 0, 0, 1, -1, -1, 1};void dfs(int ax, int ay)
{mapp[ax][ay] = '*';for(int i = 0; i < 8; i++){int x = ax + fx[i];int y = ay + fy[i];if(x >= 0 && x < m && y >= 0 && y < n && mapp[x][y] == '@')dfs(x, y);}
}int main()
{while(scanf("%d%d", &m, &n) && m+n){int countt = 0;for(int i = 0; i < m; i++)// 数据输入scanf("%s", mapp[i]);for(int i = 0; i < m; i++)for(int j = 0; j < n; j++)if(mapp[i][j] == '@')countt++, dfs(i, j);cout<<countt<<endl;}return 0;
}
  相关解决方案