poj_2386_dfs
描述
由于最近的一场雨,农夫john的田地里很多地方流入了水,由一个N*M的矩形表示。每个方格要么有水(W)要么是干的(.)。农夫想要知道他的田地里形成了多少池塘。 一个池塘由有水的方块相连,每个方块8连通。
思路
对于每个点,8个方向深搜。
属于同一个池塘的点不必重复搜索,因此可以用一个二维数组存放每个点是否被访问过的状态。(记忆化搜索)
代码
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5
6
7 int f[102][102], vis[102][102];
8 int N, M;
9
10 void read(int a[102][102],int n,int m)
11 {
12 for (int i = 0; i < n; i++)
13 {
14 char str[105];
15 scanf("%s", str);
16 for (int j = 0; j < m; j++)
17 if (str[j] == 'W')
18 f[i][j] = 1;
19
20 }
21 }
22
23 void dfs(int i, int j)
24 {
25 if (vis[i][j]||!f[i][j])return;
26 if (i < 0 || i >= N || j < 0 || j >= M)return;
27
28 vis[i][j] = 1;
29
30 dfs(i - 1, j - 1);
31 dfs(i - 1, j);
32 dfs(i - 1, j + 1);
33 dfs(i, j - 1);
34 dfs(i, j + 1);
35 dfs(i + 1, j - 1);
36 dfs(i + 1, j);
37 dfs(i + 1, j + 1);
38
39 }
40
41 int main()
42 {
43 //freopen("C:\\Users\\zgwng\\Desktop\\1852.txt", "r", stdin);
44 scanf("%d %d", &N, &M);
45
46 memset(f, 0, sizeof(f));
47 memset(vis, 0, sizeof(vis));
48 int pound = 0;
49
50 read(f, N, M);
51
52 for(int i=0;i<N;i++)
53 for (int j = 0; j < M; j++)
54 {
55 if (f[i][j] && !vis[i][j])
56 {
57 pound++;
58 dfs(i, j);
59 }
60 }
61
62 cout << pound << endl;
63
64 return 0;
65
66 }
poj_2386_dfs的更多相关文章
随机推荐
- Java:各版本官方文档
JDK16:https://docs.oracle.com/en/java/javase/16/docs/api/index-files/index-1.html JDK15:https://docs ...
- JAVA Object类方法
目录 Object类详解 一.==和equals的对比 1.1 ==是一个比较运算符 1.2 equals方法 二.hashCode方法 三.toString方法 四.finalize方法 Objec ...
- SpringBoot 搭建基于 MinIO 的高性能存储服务
1.什么是MinIO MinIO是根据GNU Affero通用公共许可证v3.0发布的高性能对象存储.它与Amazon S3云存储服务兼容.使用MinIO构建用于机器学习,分析和应用程序数据工作负载的 ...
- laravel 返回统一的json数据
laravel 在Api接口开发中,可以使用 response()->json(["code"=>200,"msg"=>"ok&qu ...
- php 23种设计模型 - 抽象工厂模式
抽象工厂模式(AbstractFactory) 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创 ...
- CSS样式下划线
样式之文字下划线 第一 text-decoration: underline; 缺点是不好修改颜色 不要修改下划线的位置,优点就是一行代码解决 可以使用line-height: 20px; 也能调整位 ...
- LGP2155题解
lg最优解来写题解啦( 题目大意: 多测: \[\sum_{i=1}^{n!}[\gcd(i,m!)=1] \] 根据 \(\gcd\) 的结论,我们可以得到答案其实是: \[\frac {n!} { ...
- PHP命令执行集锦
前言 代码审计总要遇到命令执行或者说RCE,打CTF的过程中难免不会碰见,毕竟PHP是世界上最好的语言,总结一下 命令执行函数 E.g.1 <?php error_reporting(0); s ...
- 互联网前沿技术——01 找不到模块“lodash”
检查安装 node --version 修改 安装:npm install 启动:grunt server 如果报错: 找不到模块"lodash" https://www.soin ...
- QFramework Pro 开发日志(七)v0.4 版本审核通过 与 对话编辑器功能预告
经过一周的工作,v0.4 版本总算完成了. 就在刚刚笔者在 AssetStore 提交了 v0.4 版本. v0.4 版本主要内容有两个 一键生成简单继承类图功能 底层兼容 QFramework v0 ...