poj2386Lake Counting之dfs

来源:互联网 发布:网络侦探 2周目 彩蛋 编辑:程序博客网 时间:2024/06/06 02:27

分析:朝八个方向搜索,入门题

/** Filename:    code.cpp* Created:     2017-10-26* Author:    wyl6 *[mail:17744454343@163.com]* Desciption:  Desciption*/#include <cstdio>#include <cstdlib>#include <iostream>#include <stack>#include <queue>#include <algorithm>#include <cstring>#include <string>#include <cmath>#include <vector>#include <bitset>#include <list>#include <sstream>#include <set>#include <functional>using namespace std;#define INF 0x3f3f3f3f#define MAX 100typedef long long ll;int n,m,ans;char map[105][105];int hor[8] = {1,-1,0,0,1,-1,1,-1};int ver[8] = {0,0,1,-1,-1,1,1,-1};void dfs(int x,int y){map[x][y] = '.';for (int i = 0; i < 8; i += 1){int nx = x+hor[i];int ny = y+ver[i];if (nx >=0 && ny >= 0 && nx < n && ny < m && map[nx][ny] != '.'){dfs(nx,ny);}}}int main(int argc, char const* argv[]){#ifndef ONLINE_JUDGE    freopen("in.txt", "r", stdin);    freopen("out.txt", "w", stdout);#endifwhile (cin >> n >> m){ans = 0;for (int i = 0; i < n; i += 1){for (int j = 0; j < m; j += 1){cin >> map[i][j];}}for (int i = 0; i < n; i += 1){for (int j = 0; j < m; j += 1){if(map[i][j] != '.') {dfs(i,j);ans++;}}}printf("%d\n",ans);}return 0;}


原创粉丝点击