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

一、题目

有一个大小为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);}}}}

深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)相关推荐

  1. 才在计算机存的东西搜索不到,解决电脑搜索不到文件的方法(很有效)

    <解决电脑搜索不到文件的方法(很有效)>由会员分享,可在线阅读,更多相关<解决电脑搜索不到文件的方法(很有效)(4页珍藏版)>请在人人文库网上搜索. 1.解决电脑搜索不到文件的 ...

  2. C语言递归解决水洼问题

    解析: 水洼问题的一个解法就是先找到一个水坑,将它清零,然后遍历它周围将所有水坑清零,直到将这个水洼整体清零,水洼数加一,一直循环直到将所有水洼都清零,其中要注意的一个点就是避免过界. /*水洼问题假 ...

  3. 深度RNN解决语义搜索难题

    深度RNN解决语义搜索难题 2016-08-15 22:34 转载 CSDN 0条评论 雷锋网(搜索"雷锋网"公众号关注)按:本文作者张俊林,主要介绍了3种基于深度RNN的语义搜索 ...

  4. 深度搜索----深度搜索解决数独问题

    深度搜索----深度搜索解决数独问题 1.深度优先搜索(DFS) 从某个状态开始,不断的转移状态直到无法转移,然后回退到前一步的状态,继续转移到其他状态,如此不断重复,直到找到最终的解. 2.数独问题 ...

  5. 新论文推荐:Auto-Keras:自动搜索深度学习模型的网络架构和超参数

    Auto-Keras 是一个开源的自动机器学习库,由美国德州农工大学(Texas A&M University)助理教授胡侠和他的两名博士生:金海峰.Qingquan Song提出.Auto- ...

  6. 万能的搜索——深度搜索和广度搜索

    搜索分为深度优先搜索(dfs)和广度优先搜索(bfs) 深度搜索和广度搜索的区别是: 深度搜索是往深度方向进行搜索的,先选一条路走到底,再选另一条路: 广度搜索是一层一层的,把一层上的所有情况都搜索到 ...

  7. 算法(28)--矩阵搜索系列

    矩阵搜索 1.leetcode-200. 岛屿数量 2.leetcode-695. 岛屿的最大面积 3.leetcode-463. 岛屿的周长 4.剑指 Offer 12. 矩阵中的路径 5.leet ...

  8. win7计算机搜索功能没有了,win7搜索功能不能用了怎么办|win7搜索功能不见了怎么解决? - 学无忧...

    在Win7中搜索功能相对于WinXP来讲使用越来越方便,随便打开一个文件夹,点击右上角的"搜索"文本框,输入自己需要搜索的内容就可以进行文件搜索了,但最近有网友提到win7搜索功能 ...

  9. visio版本要和word匹配吗_office2016各个版本 以及 解决visio搜索任何都提示无匹配项问题...

    版本:Office 2016 Visio 专业版 32位版 文件名:SW_DVD5_Visio_Pro_2016_W32_ChnSimp_MLF_X20-41580.ISO 文件大小:60944793 ...

最新文章

  1. 1、MySQL性能优化简述
  2. java默认xmx修改,Java 8中的默认Xmxsize
  3. sublime text 食用笔记
  4. linux内核percpu变量声明,Linux kernel percpu变量解析
  5. mysql在空闲8小时之后会断开连接(默认情况)
  6. 深度特征融合--add和concat【转载】
  7. Jquery选择器大全汇总
  8. Android dex2jar反编译dex文件报错 Detail Error Information in File .\classes-error.zip
  9. [正则表达式] 校验经度和纬度
  10. JSP中的公共菜单模板选中状态的添加
  11. wireshark学习笔记
  12. 计算机知识学习——window10台式电脑显示未插入扬声器或耳机解决方案
  13. fedora安装 设置基础软件仓库时出错
  14. 更安全的ftp服务器Pure-FTP搭建(4)
  15. Java多线程同步和异步详解
  16. 音视频开发之旅(一)三种方式绘制图片
  17. wifi信号增强android,WiFi信号增强放大器app下载
  18. 安全技术的发展:物理隔离三步曲
  19. c语言算法求约数个数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
  20. 奔驰网络语言c class,奔驰C CLASS 奢适生活的选择

热门文章

  1. 学计算机c语言吗,学习C语言对学习计算机很重吗?
  2. MM物料账在制品承担差异功能及配置
  3. Linux下可回收删除
  4. FPGA入门-腾讯云布道师团队-专题视频课程
  5. 杰理之设置立体声输出,播左右声道歌曲后DAC没有声音或声音变小
  6. python多线程爬取妹子图
  7. Scala 继承和特质
  8. IOS开发百度地图API入门到精通-用点生成路线,导航,气泡响应
  9. UML时序图速查——架构设计必备技能
  10. 反向寻车管理系统服务器,一种反向寻车系统及寻车方法