题目: 有一个大小为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语言水洼数算法,C++ 数据结构之水洼的数量算法

    C++ 数据结构之水洼的数量算法 题目: 有一个大小为N*M的园子, 雨后起了积水. 八连通的积水被认为是连接在一起的. 请求出园子里总共有多少水洼. 使用深度优先搜索(DFS), 在某一处水洼, 从 ...

  2. 算法很美:水洼数(dfs)深搜

    题目描述 Descriptions: 由于近日阴雨连天,约翰的农场中中积水汇聚成一个个不同的池塘,农场可以用 N x M (1 <= N <= 100; 1 <= M <= 1 ...

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

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

  4. 深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)

    深度搜索--深度搜索解决矩阵搜索问题(水洼数计算) 一.题目 有一个大小为N*M的园子,雨后积起了水.八连通的计税被认为是连接在一起的.请求出园子里总共有多少水洼? (八连通指的是下图中相对w的*的部 ...

  5. 水洼数(Java)(dfs)

    题解: import java.util.Scanner;public class Practice_水洼数 {static Scanner in = new Scanner(System.in);s ...

  6. 【DFS练习】水洼数

    问题描述: 水洼数目有一个大小为N * M的院子,雨后积起了水, 八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 测试集在代码后面 总体思路: 一个 ...

  7. C语言基础编程题——喝水问题,译码问题

    C语言基础编程题--喝水问题,译码问题 有这样一道智力题:"某商店规定:三个空汽水瓶可以换一瓶汽水.小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?"答案是5瓶,方法如下:先用9 ...

  8. 《挖财编程题》水花仙数

    题目描述 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: "水仙花数"是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^ ...

  9. 【小嘟陪你刷题04】Java实现水花仙数、九九乘法表、金字塔

    目录 前言 实现水花仙数 九九乘法表 金字塔 前言 此篇是对一些Java基础知识的复习! 实现水花仙数 //使用三种循环方式去实现水仙花数//水仙花数是3位数的特点//1.使用while循环输出所有的 ...

最新文章

  1. 爬虫之lxml模块中etree.tostring函数的使用
  2. 三步快删EXCEL工作表下面出现1000多万行无用数据或者空白行(空值行)
  3. u盘安装linux双系统6,用U盘安装Centos6.5 + Win7 双系统
  4. leetcode 84. Largest Rectangle in Histogram | 84. 柱状图中最大的矩形(单调栈)
  5. 第6讲 | 理解区块链之前,先上手体验一把数字货币
  6. USB摄像头视频监控项目学习笔记
  7. uva10026-鞋匠的难题
  8. C语言烟花代码,C语言实现烟花表白代码
  9. unity3d kinect体感互动解决方案——2D体感换装
  10. xlsxwriter写入Excel
  11. 0806 07 08 09 12上午数据库
  12. 标准时钟系统(体育场馆时钟同步系统)京准电子
  13. 渗透测试利器-打造全能VPS
  14. android自定义秒表,Android:一个简单的秒表实现
  15. 模仿blblblbl登录页面
  16. 辉芒微IO单片机FT60F011A-RB
  17. 小渔夫 | 一万多的椅子照样畅销全球,它是怎么做到的?
  18. 安全可靠快速地导出微信聊天记录
  19. 写给英语和数学都不怎么好的游戏开发爱好者
  20. Element-UI组件之其他Others

热门文章

  1. typora使用smms图床
  2. md笔记上传到CSDN---Typora+SMMS+PicGo
  3. word2vec:基于层级 softmax 和负采样的 Skip-Gram
  4. Python实训day08am【网络爬虫selenium、图像处理入门】
  5. SQL中round()函数、Ucase()、Lcase()、as的用法
  6. 细粒度图像分类(FGVC)--- 综述
  7. Arcgis教程:如何批量统计网格内的线段长度。
  8. 光功率 博科交换机_交换机光功率
  9. 国内五大抗DDoS服务
  10. 学习html的体会和总结