基础DFS-Lake Counting
2015-09-22 21:59
225 查看
题目大意:找坑,八连通(八个方向都可以认为坑是连通的),求解有几个坑
解题思路:基本DFS,遍历每个坑,递归把(遍历找每个连通的坑)每个联通的‘W’变成‘.’,DFS调用几次就是有几个坑
#include<stdio.h> #include<iostream> using namespace std; int N,M; char field[1000][1000]; void dfs(int x, int y) { field[x][y] = '.'; for(int dx = -1; dx<=1;dx++) { for(int dy = -1 ; dy<=1;dy++) { int nx = x+dx; int ny = y+dy; if(field[nx][ny]=='W' && nx>=0 && nx<N && ny>=0 && ny<M) { dfs(nx,ny); } } } return ; } int main() { while(cin>>N>>M) { for(int i = 0 ; i < N ; i++) { scanf("%s",field[i]); } int ans = 0; for(int i = 0 ; i < N ; i++) { for(int j = 0 ; j < M; j++) { if(field[i][j]=='W') { dfs(i,j); ans ++; } } } cout<<ans<<endl; } return 0; }
相关文章推荐
- 图像处理中的数学原理详解(Part2)
- ocp-v13-480
- CYC-多线程 售票问题
- 用C语言编写的简单的猜数字游戏
- spark sql cache
- spark sql cache
- spark sql cache
- ubuntu中孤儿进程的父进程pid并不是1??
- spark sql cache
- hdu1573 X问题(中国剩余定理)
- 数独游戏的设计与实现之第一篇——理解数独过程
- hdu3078 伪LCA……
- mysql修改root密码的方法
- 非类型模板参数
- FSWD_2_JavaScript
- velocity基本语法
- python 定时器
- php 微信刮刮卡
- 笔记-GCD相关
- HDU 2571 命运(DP)