深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)
深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)
一、题目
有一个大小为N*M的园子,雨后积起了水。八连通的计税被认为是连接在一起的。请求出园子里总共有多少水洼?
(八连通指的是下图中相对w的*的部分)
二、输入与输出
输入园子的积水矩阵图,w表示积水,.表示没有积水
输出水洼个数,为3
如图三个水洼为红色圈起的部分:
三、算法分析与实现
实现思路:首先需要明白构成同一个水洼的条件,即如果能够成同一个水洼,那么该区域中的所有积水点是连通的(八连通),因此为了寻找园子中的积水连通区域,我们需要在整个园子中进行搜索。
为了能够全面搜索,我们遍历整个园子,每遇到一个积水点,则就从该积水点开始搜索出所有与之连通的积水点,为了能够全面搜索,我们采用深度优先搜索,并将经过的积水点进行标记(这里我们标记成’.’),避免出现环路。
public class AlgorithmCenter200714{private char[,] a = new char[,]{ {'w','.','.','.','.','.','.','.','.','w','w','.' },{'.','w','w','w','.','.','.','.','.','w','w','w' },{'.','.','.','.','w','w','.','.','.','w','w','.' },{'.','.','.','.','.','.','.','.','.','w','w','.' },{'.','.','.','.','.','.','.','.','.','w','.','.' },{'.','.','w','.','.','.','.','.','.','w','.','.' },{'.','w','.','w','.','.','.','.','.','w','w','.' },{'w','.','w','.','w','.','.','.','.','.','w','.' },{'.','w','.','w','.','.','.','.','.','.','w','.' },{'.','.','w','.','.','.','.','.','.','.','w','.'}};private int h => a.GetLength(0);//10private int w => a.GetLength(1);//12/// <summary>/// 计算水洼个数/// </summary>/// <param name="a"></param>/// <returns></returns>public int CaluatePuddleCount(){int count = 0;//查找矩阵中的w,从'w'开始dfsfor (int i=0;i<h;i++){for (int j = 0; j < w; j++){if (a[i,j] == 'w'){//对每个'w'进行8个方向上的dfsDfs(i,j);count++;}}}return count;}private void Dfs(int x,int y){a[x,y] = '.';for (int dx = -1; dx <= 1; dx++){for (int dy = -1; dy <= 1; dy++){int nx = x + dx;int ny = y + dy;if (nx >= 0 && nx < h && ny >= 0 && ny < w && a[nx, ny] == 'w')Dfs(nx,ny);}}}}
深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)相关推荐
- 才在计算机存的东西搜索不到,解决电脑搜索不到文件的方法(很有效)
<解决电脑搜索不到文件的方法(很有效)>由会员分享,可在线阅读,更多相关<解决电脑搜索不到文件的方法(很有效)(4页珍藏版)>请在人人文库网上搜索. 1.解决电脑搜索不到文件的 ...
- C语言递归解决水洼问题
解析: 水洼问题的一个解法就是先找到一个水坑,将它清零,然后遍历它周围将所有水坑清零,直到将这个水洼整体清零,水洼数加一,一直循环直到将所有水洼都清零,其中要注意的一个点就是避免过界. /*水洼问题假 ...
- 深度RNN解决语义搜索难题
深度RNN解决语义搜索难题 2016-08-15 22:34 转载 CSDN 0条评论 雷锋网(搜索"雷锋网"公众号关注)按:本文作者张俊林,主要介绍了3种基于深度RNN的语义搜索 ...
- 深度搜索----深度搜索解决数独问题
深度搜索----深度搜索解决数独问题 1.深度优先搜索(DFS) 从某个状态开始,不断的转移状态直到无法转移,然后回退到前一步的状态,继续转移到其他状态,如此不断重复,直到找到最终的解. 2.数独问题 ...
- 新论文推荐:Auto-Keras:自动搜索深度学习模型的网络架构和超参数
Auto-Keras 是一个开源的自动机器学习库,由美国德州农工大学(Texas A&M University)助理教授胡侠和他的两名博士生:金海峰.Qingquan Song提出.Auto- ...
- 万能的搜索——深度搜索和广度搜索
搜索分为深度优先搜索(dfs)和广度优先搜索(bfs) 深度搜索和广度搜索的区别是: 深度搜索是往深度方向进行搜索的,先选一条路走到底,再选另一条路: 广度搜索是一层一层的,把一层上的所有情况都搜索到 ...
- 算法(28)--矩阵搜索系列
矩阵搜索 1.leetcode-200. 岛屿数量 2.leetcode-695. 岛屿的最大面积 3.leetcode-463. 岛屿的周长 4.剑指 Offer 12. 矩阵中的路径 5.leet ...
- win7计算机搜索功能没有了,win7搜索功能不能用了怎么办|win7搜索功能不见了怎么解决? - 学无忧...
在Win7中搜索功能相对于WinXP来讲使用越来越方便,随便打开一个文件夹,点击右上角的"搜索"文本框,输入自己需要搜索的内容就可以进行文件搜索了,但最近有网友提到win7搜索功能 ...
- visio版本要和word匹配吗_office2016各个版本 以及 解决visio搜索任何都提示无匹配项问题...
版本:Office 2016 Visio 专业版 32位版 文件名:SW_DVD5_Visio_Pro_2016_W32_ChnSimp_MLF_X20-41580.ISO 文件大小:60944793 ...
最新文章
- 1、MySQL性能优化简述
- java默认xmx修改,Java 8中的默认Xmxsize
- sublime text 食用笔记
- linux内核percpu变量声明,Linux kernel percpu变量解析
- mysql在空闲8小时之后会断开连接(默认情况)
- 深度特征融合--add和concat【转载】
- Jquery选择器大全汇总
- Android dex2jar反编译dex文件报错 Detail Error Information in File .\classes-error.zip
- [正则表达式] 校验经度和纬度
- JSP中的公共菜单模板选中状态的添加
- wireshark学习笔记
- 计算机知识学习——window10台式电脑显示未插入扬声器或耳机解决方案
- fedora安装 设置基础软件仓库时出错
- 更安全的ftp服务器Pure-FTP搭建(4)
- Java多线程同步和异步详解
- 音视频开发之旅(一)三种方式绘制图片
- wifi信号增强android,WiFi信号增强放大器app下载
- 安全技术的发展:物理隔离三步曲
- c语言算法求约数个数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
- 奔驰网络语言c class,奔驰C CLASS 奢适生活的选择