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的更多相关文章
随机推荐
- 60天shell脚本计划-8/12-渐入佳境
--作者:飞翔的小胖猪 --创建时间:2021年3月3日 --修改时间:2021年3月7日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可在评 ...
- PIL-ImageFont:OSError: cannot open resource
使用PIL时,创建某个字体Font对象时出错: font=ImageFont.truetype('Arial.ttf',36) 可能原因有两个: 1.PIL无法定位到字体文件的位置. 可以通过提供绝对 ...
- Linux的用户与用户组管理
1.Linux用户与用户组 Linux 是多用户多任务操作系统,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响.不同用户具有不问的权限,毎个用户在权限允许的范围 ...
- C#读写自定义的多字段配置文件
mark一下,日后填坑 参考: WPF 读写自己写的配置文件
- Linux常用文件管理命令详解
cat cat命令用于连接文件并打印到标准输出设备上. 命令语法:cat [参数] [文件名] 参数说明: 参数 说明 -n 由1开始对所有输出的行数进行编号. -b 由1开始对所有输出的行数进行编号 ...
- NET 中反射的用法
1. 反射的学习 A.反射的定义 B.反射举例 namespace Com.Meteor.Interface { public interface IHelper { void Query(); ...
- 使用虚拟机在CentOS上安装部署数据库使用
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 本节描述使用数据库的基本操作.通过此节您可以完成创建数据库.创建表及向表中插入数据和查询表中数据等操作. 2.1 前提条件 ●openGauss正 ...
- ArcGIS Server 禁用/rest/services路径(禁用服务目录)
ArcGIS Server服务目录(路径如:http://<hostname>:6080/arcgis/rest/services)默认可以不需要登陆直接打开.效果如下图. ArcGIS服 ...
- 74CMS 3.0 存储型XSS漏洞
一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 2.因为74CMS3.0源代码编辑使用GBK编 ...
- 【网鼎杯2020青龙组】Web WriteUp
AreUSerialz 打开题目直接给出了源代码 <?php include("flag.php"); highlight_file(__FILE__); class Fil ...