POJ 2386 Lake counting
来源:互联网 发布:专业泳衣知乎 编辑:程序博客网 时间:2024/05/16 05:25
本题链接可在poj 中根据题号找到
基本思路:通过深度优先遍历的方法找出所有八连通的点,即如果有一点是水,那么周围是水的点应该按深度优先遍历,并置为‘.’。按照上述的过程一直遍历,那么相连通的水集合都会被置为‘.’,但是其他不连通的点依然保持不变,因此我们需要对原始图进行一次遍历,如果有水,则按照上述的过程dfs。总之,在图上遇到几次水,说明有几个水集合。
代码如下:
#include<stdio.h>#include<iostream>using namespace std;const int N_Max=100,M_Max=100;char Lake[N_Max][M_Max];int N,M;void dfs(int n,int m){if(Lake[n][m]=='.')return;Lake[n][m]='.';for(int i=-1;i!=2;i++)for(int j=-1;j!=2;j++){if( 0<=n+i&&n+i<N && 0<=m+j&&m+j<M && Lake[n+i][m+j]=='W')dfs(n+i,m+j);}return ;}int main(){cin>>N>>M;for(int i=0;i!=N;i++)for(int j=0;j!=M;j++){cin>>Lake[i][j];}int res=0;for(int i=0;i!=N;i++)for(int j=0;j!=M;j++){if(Lake[i][j]=='W'){dfs(i,j);res++;}}printf("%d\n",res);return 0;}
0 0
- poj 2386 Lake Counting
- poj 2386 Lake Counting
- POJ 2386 Lake Counting
- poj 2386 Lake Counting
- poj 2386 Lake Counting
- poj 2386 Lake Counting
- POJ 2386 Lake Counting
- poj 2386 Lake Counting
- POJ 2386 Lake Counting
- POJ 2386 Lake Counting
- poj 2386 Lake Counting
- POJ 2386 Lake Counting
- POJ 2386 Lake Counting
- POJ-2386-Lake Counting
- POJ 2386 Lake Counting
- poj 2386 Lake Counting
- Poj 2386 Lake Counting
- poj 2386 Lake Counting
- C 语言程序设计实践 4.1 简单的运算Ⅰ
- 如何更改Oracle字符集
- [ARM]ARM平台处理器简介-ARMv7
- Binary String Matching
- 1.Properties文件的编写
- POJ 2386 Lake counting
- storyboard 学习笔记
- hdu-1238
- mongodb聚合命令总结
- mvc入门
- leetcode: Minimum Window Substring
- iOS开发中的几个小坑
- C 语言程序设计实践 4.2 水仙花数
- golang学习笔记[5] 整型