详解ACM基础算法—DFS深度优先搜索算法 HIT杨朔

  1. 深度优先搜索(DFS)是搜索手段之一。是从某个状态开始不断转移状态直到无法转移为止,然后退回到前一步状态继续转移其他状态,可以想象为一个沿树爬行的虫子,在一个交叉口他会首先随机选择一条分岔路口一直走下去直到死路为止,然后会返回到这个交叉口沿着另一条分支爬行下去,直到遍历所有可能的路径为止。根据这个特点,DFS算法用递归来实现比较简单。网上找的图

以下例题说明

  • Lake Counting(POJ)
    有一个大小为N*M的园子,雨后积水。八连通的积水被认为是连接在一起的。请求出园子里总共有多少水洼?(八连通指的是下图中相对W的A部分)
    AAA
    AWA
    AAA
    样例输入N=10,M=12,园子如下:
    w … … . . ww .
    . www … . . www
    … . ww … ww .
    … … … ww .
    … … … w . .
    . . w … … w . .
    . w . w … . . ww .
    w . w . w … . . w .
    . w . w … … w .
    . . w … … . w .
    输出 3
    • 解析:从任意w开始,不停把邻接部分用’.’代替。一次DFS后与初始的这个w连接的所有w就都被替换成了’.’,因此直到图中不再存在w为止,总共进行DFS的次数就是答案了。八个方向共对应了8种状态转移,每个格子DFS参数至多被调用一次。
    • 以下是部分答案片段,没写输入输出流以及主函数,但是主要功能函数在下面
#include <iostream>
#include <cstdio>
using namespace std;//输入
int N,M;
char field[MAX_N][MAX_M + 1]; // 园子void dfs (int x,int y)  //现在位置(x,y)
{field[x][y] = '.';   //将现在位置替换为‘.’for(int dx = -1; dx <= 1; dx++)  //循环遍历移动的8个方向{for(int dy = -1; dy <= 1; dy++){int nx = x + dx,ny = y + dy;  //向x方向移动dx,向y方向移动dy,移动结果为(nx,ny)if( 0 <= nx && nx <=N && 0 <=ny && ny <=M && field[nx][ny] == 'w')        //判断点是不是在院子内以及是否有积水dfs(nx, ny);}}return;
}
void solve()
{int res = 0;for(int i = 0; i < N; i++){for(int j = 0; j < M; j++){if (field[i][j] == 'w'){dfs(i, j);   // 从有w的地方开始dfsres++;}}}printf("%d\n", res);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1618794.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【调试经验】Ubuntu22.04 安装和配置MySQL 8.0.34

在安装新版本的MySQL到电脑时&#xff0c;按着网上一些教程执行发现错误繁多&#xff0c;最后索性自己摸索并把服务装好了。自己也整理了一下在操作时的一些&#xff0c;上传分享上来希望能帮助到大家。 目录 正文 安装MySQL 配置MySQL 登录账户 方式1: 默认账户登录 方…

Illustrator打开visio导出的emf为什么会报错

问题描述 将使用Visio绘制的.emf文件直接拖入Adobe Illustrator有时候会弹出如下报错窗口——“无法完成操作&#xff0c;因为出现未知错误。” 原因分析 经过多次测试&#xff0c;发现这个跟Visio中元素的数量有关&#xff0c;当数量>24或>27&#xff08;差不多就这…

加密狗检测不到mysql_广联达检测不到加密锁

请先检查本机是否已正确安装广联达软件及加密锁驱动程序&#xff0c;盗版用户还需要安装一个“授权工具”。 碰到此问题&#xff0c;着实让人头疼。偶本人表示已经碰到很多次&#xff0c;有句古话&#xff1a;久病成医(有这句话&#xff1f;)。现将解决方法记录如下&#xff1a…

【教程】广联达装饰设计(Deco Design)软件模型导出

【教程】广联达装饰设计&#xff08;Deco Design&#xff09;软件模型导出 首先确认自己的模型是正常&#xff0c;并且可以显示&#xff0c;包括家具&#xff08;不管是外部还是内部&#xff09;。选择工具 - 显示设置 - 楼层显示 - 自定义楼层-全部楼层。 开始-导出-Igms即可…

并发编程基础知识篇--线程的状态和基本操作

目录 创建线程的四种方式 线程的状态和生命周期 扩展知识 线程的调度 线程状态的基本操作 interrupted 实例 join 实例 sleep 实例 扩展小知识 yield 实例 扩展 创建线程的四种方式 创建线程的四种方式 继承Thread类实现Runnable接口使用Callable和Future创…

win7笔记本无线网服务器,win7笔记本连接不上无线网络

有些时候我们在使用win7笔记本&#xff0c;难免会遇到连接不上无线网络的情况&#xff0c;这是怎么回事呢?下面就由学习啦小编来为你们简单的介绍win7笔记本连接不上无线网络的解决方法吧! win7笔记本连接不上无线网络的解决方法 Win7右下角的无线图标为但还是连接不上的话&am…

win7计算机建立无线网络连接不上,教你电脑连接不上无线网络怎么办

最近有网友反馈&#xff0c;遇到了笔记本无法连接无线网络的问题。笔记本如果连接不了WiFi&#xff0c;这样就会带来很多不便。其实导致电脑连接不上无线网络的原因有很多&#xff0c;接下来就让小编教你电脑连接不上无线网络怎么办吧。 电脑连接不上无线网络怎么办&#xff1a…

Win10电脑连接不上无线网络怎么解决

为了电脑使用方便&#xff0c;很多网友都会给电脑连接上无线网络来上网&#xff0c;但是电脑遇到连不上网络怎么办呢&#xff1f;今天给大家分享一个方法&#xff0c;大家遇到无线网络连接不上问题可以参考一下。 系统&#xff1a;win10专业版 电脑&#xff1a;联想Ideapad 7…

Win10笔记本电脑连接不上WiFi的解决办法

笔记本电脑连接不上WiFi是很多朋友会遇到的一个问题,而产生的原因也很多,解决起来相对麻烦一些,需要了解导致的原因与排查方法。最近小编的Win10笔记本电脑也遇到了类似的无线网络连接不可用的问题,不过通过排查很快就解决了,下面小编分享一下详细的Win10笔记本电脑连接不…

禁用计算机的网络连接无线网络连接不上,win7笔记本电脑无线网络连接不上怎么解决?...

最近有不少网友都遇到了win7笔记本电脑无线网络连接不上的问题。我们都知道&#xff0c;无线网络是可以共享的&#xff0c;笔记本无线网络连接不上&#xff0c;我们就无法有进一步的操作了。那么&#xff0c;win7笔记本电脑无线网络连接不上怎么解决呢?接下来&#xff0c;小编…

深度学习怎么学?

推荐这本小白看的《深度学习&#xff1a;从基础到实践&#xff08;上下册&#xff09;》。 深度学习&#xff1a;从基础到实践&#xff08;上下册&#xff09; 深入浅出的讲述了深度学习的基本概念与理论知识&#xff0c;不涉及复杂的数学内容&#xff0c;零基础小白也能轻松掌…

笔记本计算机无法上无线网络,告诉你解决笔记本电脑连不上无线网络

在科技快速发展的今天&#xff0c;无线网络给我们的生活带来了极大的方便&#xff0c;正是因为有无线网卡的存在&#xff0c;才使得笔记本电脑能够开启WiFi&#xff0c;成为移动热点。不过也有用户会遇到笔记本电脑连不上无线网络的情况&#xff0c;该怎么去解决呢&#xff1f;…

禁用计算机的网络连接无线网络连接不上,笔记本电脑无线网络连接不上是什么原因...

笔记本电脑无线网络连接不上是什么原因&#xff1f;笔记本电脑连接不上无线网络的原因&#xff0c;有以下几种可能&#xff1a;1、无线网络密码不正确&#xff1b;2、无线网络缓存问题&#xff1b;3、路由器上进行了限制。 笔记本电脑无线网络连接不上 一、无线网络密码不正确 …

笔记本电脑连接不上WiFi怎么办?4个实用解决方法!

案例&#xff1a;笔记本电脑连接不上WiFi怎么办 “朋友们&#xff0c;想问问大家知道为什么我的笔记本电脑连接不上WiFi呢&#xff1f;试了好几遍还是无法连接&#xff0c;遇到这种情况我应该怎么解决呢&#xff1f;感谢大家&#xff01;” 在现代生活中&#xff0c;笔记本电…

网络能搜索计算机但不能连接不上,笔记本能搜到无线网络但连接不上怎么办

现在的无线网络已经是随处可见了&#xff0c;手机和电脑也都能够通过连接无线进行上网&#xff0c;不过有一些用户是例外的&#xff0c;下面学习啦小编教大家 笔记本能搜到无线网络但连接不上的解决方法&#xff0c;供您参考。 笔记本能搜到无线网络但连接不上的解决方法 首先…

怎样开启计算机无线网络连接不上,电脑连接不上无线网络,详细教您解决笔记本电脑连不上无线网络...

在科技快速发展的今天&#xff0c;无线网络给我们的生活带来了极大的方便&#xff0c;正是因为有无线网卡的存在&#xff0c;才使得笔记本电脑能够开启WiFi&#xff0c;成为移动热点。不过也有用户会遇到笔记本电脑连不上无线网络的情况&#xff0c;该怎么去解决呢&#xff1f;…

联想i5无线网无法连接服务器,联想笔记本无线网络连接不上是什么原因

原因&#xff1a; ①、要看看是不是硬件问题&#xff0c;比如&#xff1a;无线网卡、路由器、电脑有一样出现异常就可能导致无线网络连接不上。 ②、要看看无线网络是否没开&#xff0c;很多笔记本为了省电&#xff0c;设计时默认了无线网络开关&#xff0c;所以&#xff0c;要…

为什么计算机连不上无线网络,笔记本无线连不上是什么原因_为什么笔记本电脑连不上wifi-win7之家...

在使用笔记本电脑的时候&#xff0c;我们经常喜欢连接无线wifi网络来使用&#xff0c;然而有时候可能会遇到笔记本无线连不上的情况&#xff0c;很多用户不知道是什么原因引起的&#xff0c;那么为什么笔记本电脑连不上wifi呢&#xff1f;原因有多种&#xff0c;接下来为大家讲…

API管理风险:如何确保您的API安全与可靠?

API管理风险&#xff1a;如何确保您的API安全与可靠&#xff1f; 随着数字化时代的到来&#xff0c;应用程序接口&#xff08;API&#xff09;在现代软件开发中发挥着关键的作用。然而&#xff0c;API管理过程中存在着各种潜在的风险。本文将探讨如何有效地管理和缓解这些风险…

win7计算机建立无线网络连接不上,Win7笔记本无线网络连接不上如何解决?

随着网络的不断发展&#xff0c;无线网络已经随处可见了。而现在的笔记本都有内置的无线网卡&#xff0c;只要有WiFi的热点还有知道无线密码就可以登录了。最近&#xff0c;有Win7系统的用户&#xff0c;在使用电脑上网的时候&#xff0c;发现无线网络连接不上。这是怎么回事&a…