C语言水洼数算法,水洼的数量算法 代码(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)相关推荐
- C语言水洼数算法,C++ 数据结构之水洼的数量算法
C++ 数据结构之水洼的数量算法 题目: 有一个大小为N*M的园子, 雨后起了积水. 八连通的积水被认为是连接在一起的. 请求出园子里总共有多少水洼. 使用深度优先搜索(DFS), 在某一处水洼, 从 ...
- 算法很美:水洼数(dfs)深搜
题目描述 Descriptions: 由于近日阴雨连天,约翰的农场中中积水汇聚成一个个不同的池塘,农场可以用 N x M (1 <= N <= 100; 1 <= M <= 1 ...
- 水洼数 DFS 蓝桥杯 java代码
水洼数 DFS 蓝桥杯 java代码 有一个大小为N * M的院子,雨后积起了水,八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 10 12 W.. ...
- 深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)
深度搜索--深度搜索解决矩阵搜索问题(水洼数计算) 一.题目 有一个大小为N*M的园子,雨后积起了水.八连通的计税被认为是连接在一起的.请求出园子里总共有多少水洼? (八连通指的是下图中相对w的*的部 ...
- 水洼数(Java)(dfs)
题解: import java.util.Scanner;public class Practice_水洼数 {static Scanner in = new Scanner(System.in);s ...
- 【DFS练习】水洼数
问题描述: 水洼数目有一个大小为N * M的院子,雨后积起了水, 八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 测试集在代码后面 总体思路: 一个 ...
- C语言基础编程题——喝水问题,译码问题
C语言基础编程题--喝水问题,译码问题 有这样一道智力题:"某商店规定:三个空汽水瓶可以换一瓶汽水.小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?"答案是5瓶,方法如下:先用9 ...
- 《挖财编程题》水花仙数
题目描述 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: "水仙花数"是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^ ...
- 【小嘟陪你刷题04】Java实现水花仙数、九九乘法表、金字塔
目录 前言 实现水花仙数 九九乘法表 金字塔 前言 此篇是对一些Java基础知识的复习! 实现水花仙数 //使用三种循环方式去实现水仙花数//水仙花数是3位数的特点//1.使用while循环输出所有的 ...
最新文章
- 爬虫之lxml模块中etree.tostring函数的使用
- 三步快删EXCEL工作表下面出现1000多万行无用数据或者空白行(空值行)
- u盘安装linux双系统6,用U盘安装Centos6.5 + Win7 双系统
- leetcode 84. Largest Rectangle in Histogram | 84. 柱状图中最大的矩形(单调栈)
- 第6讲 | 理解区块链之前,先上手体验一把数字货币
- USB摄像头视频监控项目学习笔记
- uva10026-鞋匠的难题
- C语言烟花代码,C语言实现烟花表白代码
- unity3d kinect体感互动解决方案——2D体感换装
- xlsxwriter写入Excel
- 0806 07 08 09 12上午数据库
- 标准时钟系统(体育场馆时钟同步系统)京准电子
- 渗透测试利器-打造全能VPS
- android自定义秒表,Android:一个简单的秒表实现
- 模仿blblblbl登录页面
- 辉芒微IO单片机FT60F011A-RB
- 小渔夫 | 一万多的椅子照样畅销全球,它是怎么做到的?
- 安全可靠快速地导出微信聊天记录
- 写给英语和数学都不怎么好的游戏开发爱好者
- Element-UI组件之其他Others