C++ 数据结构之水洼的数量算法

题目: 有一个大小为N*M的园子, 雨后起了积水. 八连通的积水被认为是连接在一起的. 请求出园子里总共有多少水洼.

使用深度优先搜索(DFS), 在某一处水洼, 从8个方向查找, 直到找到所有连通的积水. 再次指定下一个水洼, 直到没有水洼为止.

则所有的深度优先搜索的次数, 就是水洼数. 时间复杂度O(8*M*N)=O(M*N).

代码:

/*

* main.cpp

*

* Created on: 2014.7.12

*本栏目更多精彩内容:http://www.bianceng.cn/Programming/sjjg/

* Author: spike

*/

#include

#include

#include

#include

class Program {

static const int MAX_N=20, MAX_M=20;

int N = 10, M = 12;

char field[MAX_N][MAX_M+1] = {

"W........WW.",

".WWW.....WWW",

"....WW...WW.",

".........WW.",

".........W..",

"..W......W..",

".W.W.....WW.",

"W.W.W.....W.",

".W.W......W.",

"..W.......W."};

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, ny = y+dy;

if (0<=dx&&nx

}

}

return;

}

public:

void solve() {

int res=0;

for (int i=0; i

for (int j=0; j

if (field[i][j] == 'W') {

dfs(i,j);

res++;

}

}

}

printf("result = %d\n", res);

}

};

int main(void)

{

Program P;

P.solve();

return 0;

}

输出:

result = 3

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

C语言水洼数算法,C++ 数据结构之水洼的数量算法相关推荐

  1. 算法与数据结构c语言版PPT,C语言算法与数据结构.ppt

    C语言算法与数据结构.ppt 第十二章 算法与数据结构12.1 算法的基本概念,该节知识点所占试题比重为12,属于重点考查对象,基本上每次必考,主要考查算法的定义和对算法复杂度的理解.历次试题分值在0 ...

  2. Caché 算法与数据结构

    第一章 Caché 算法与数据结构 基础和概念 ☆☆☆☆☆ 第二章 Caché 算法与数据结构 数组原理 ☆☆☆☆☆ 第三章 Caché 算法与数据结构 链表原理 ☆☆☆☆☆ 第四章 Caché 算法 ...

  3. 【实战笔记】Java 算法与数据结构-排序(选择、插入、冒泡、希尔、归并、快速、堆)

    文章目录 基础排序算法O(n^2) 选择排序 插入排序及优化 冒泡排序及优化 希尔排序及优化 高级排序算法O(nlogn) 归并排序及优化 快速排序及优化 堆和堆排序 排序算法总结 本文为慕课网实战课 ...

  4. GitHub上分享的常用算法和数据结构实现原理可视化系统

    一门编程语言入门之后,要想进阶,必须学习算法和数据结构,但是对于初学者来讲算法和数据结构和数据结构的实现原理和机制过于枯涩.抽象难懂. 这里为小伙伴们分享一个名为Algorithm Visualize ...

  5. (java)玩转算法系列-数据结构精讲[学习笔记](一)不要小瞧数组

    前言: 课程:玩转算法系列–数据结构精讲 更适合0算法基础入门到进阶(java版) 此处是个人学习笔记,用作回顾用途 不要小瞧数组 1.使用java中的数组 Main.java: public cla ...

  6. 算法与数据结构体系:线性查找

    算法与数据结构体系 - 线性查找 什么是算法 线性查找法 基础创建 修改1:私有化 修改2:泛型 提升:自定义Student类测试算法 复杂度分析:表示算法的性能 常见算法的复杂度 测试算法性能 什么 ...

  7. C语言水洼数算法,水洼的数量算法 代码(C)

    题目: 有一个大小为N*M的园子, 雨后起了积水. 八连通的积水被认为是连接在一起的. 请求出园子里总共有多少水洼. 使用深度优先搜索(DFS), 在某一处水洼, 从8个方向查找, 直到找到所有连通的 ...

  8. 算法和数据结构(golang语言实现)

    算法和数据结构(golang语言实现) 第1节 选择.冒泡.插入.复杂度 选择排序 选择排序 时间复杂度为O(N^2) 额外空间复杂度O(1) 过程: arr[0-N-1]范围上,找到最小值所在的位置 ...

  9. 水洼数 DFS 蓝桥杯 java代码

    水洼数 DFS 蓝桥杯 java代码 有一个大小为N * M的院子,雨后积起了水,八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 10 12 W.. ...

最新文章

  1. 影响HP服务器的磁盘性能的重要因素 -- 阵列卡的缓存和电池
  2. ajax与easyui树节点,EasyUI中的tree用法介绍
  3. iOS快速集成检查更新
  4. SVG基本形状及样式设置
  5. CentOS 7 下安装 mysql ,以及用到的命令
  6. 服务器虚拟化分为半,服务器虚拟化有哪些?
  7. 2020中国民营企业500强调研分析报告
  8. Mac下Git项目使用的.gitignore文件
  9. Windows 搭建 .NET 跨平台环境并运行应用程序
  10. Spring的IoC理解,代码进行详解
  11. 要想赚到最轻松的钱,就要靠资源整合的重要性
  12. STM32CubeMX使用(七)之通用定时器和系统定时器
  13. php面试专题---1、php中变量存储及引用的原理
  14. Fiddler抓包 - 系统找不到相应的文件FSE.exe,未能找到路径CustomRules.js的一部分,未能加载程序或程序集 “fiddle“ 或它的依赖项
  15. 互联网黑产剖析——虚假号码
  16. 工作中使用到的单词(软件开发)
  17. 2020 IDEA插件无法安装问题
  18. 按键云数据仓库平台 ,连接按键精灵和云端数据库,可自行配置用做网络验证或云端配置
  19. hadoop配置eclipse的开发环境
  20. 【嵌入式20】STM32F103完成对SD卡的数据读取详细操作

热门文章

  1. Python模块unittest
  2. mysql恢复root密码
  3. Centos7修改默认网卡名(改为eth0)以及网卡启动报错RTNETLINK answers: File exists处理...
  4. (八十二)利用苹果服务器获取导航信息和绘制路径
  5. 卫星轨道推演计算相关知识点总结(含欧拉角、旋转矩阵、及各坐标系转化等)
  6. 智能驾驶继续突破,国内国外技术进入深水区
  7. 大型对冲基金正训练AI交易 5年后AI在量化中将成主流
  8. 中国大学生源质量排行榜150强
  9. VC6.0连接数据库,并把大量数据从ACCess转移到SQL sever2008 的问题(亲测可用)
  10. html中加载解析,HTML页面加载和解析流程详细介绍