![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
DFS
文章平均质量分 59
深搜
向上的yyy
路漫漫其修远兮,吾将上下而求索
展开
-
dfs、bfs搜索题型小结
最短路问题,一般采用bfs比较好;想用dfs解决的话,需要剪枝;下面这几道涉及到状态压缩,比普通的题会稍微复杂一点;求连通块数量,可以顺便求一下连通块中的最大数量;求连通块数量(此题默认只有两个),连通两个连通块。当然求连通块也可以用并查集来做,下面提供一个例题。这里用dfs解决,下面有一个bfs解决方法;这种问题就不需要回溯;原创 2023-01-07 14:39:14 · 1031 阅读 · 0 评论 -
P5318 【深基18.例3】查找文献——dfs+bfs遍历图
小K 喜欢翻看洛谷博客获取知识。每篇文章可能会有若干个(也有可能没有)参考文献的链接指向别的博客文章。小K 求知欲旺盛,如果他看了某篇文章,那么他一定会去看这篇文章的参考文献(如果他之前已经看过这篇参考文献的话就不用再看它了)。假设洛谷博客里面一共有n(n≤105)篇文章(编号为 1 到n)以及m(m≤106)条参考文献引用关系。目前小 K 已经打开了编号为 1 的一篇文章,请帮助小 K 设计一种方法,使小 K 可以不重复、不遗漏的看完所有他能看到的文章。原创 2022-12-15 14:17:37 · 174 阅读 · 0 评论 -
P3916 图的遍历——反向建边dfs
给出N个点,M条边的有向图,对于每个点v,求A(v)表示从点v出发,能到达的编号最大的点。原创 2022-12-15 14:16:49 · 453 阅读 · 0 评论 -
1335:【例2-4】连通块——dfs、bfs
题目描述】一个n × m的方格图,一些格子被涂成了黑色,在方格图中被标为1,白色格子标为0。问有多少个四连通的黑色格子连通块。四连通的黑色格子连通块指的是一片由黑色格子组成的区域,其中的每个黑色格子能通过四连通的走法(上下左右),只走黑色格子,到达该联通块中的其它黑色格子。【输入】第一行两个整数n,m(1≤n,m≤100),表示一个n × m的方格图。接下来n行,每行m个整数,分别为0或1,表示这个格子是黑色还是白色。【输出】一行一个整数ans,表示图中有ans个黑色格子连通块。......原创 2022-08-12 21:01:21 · 3050 阅读 · 2 评论 -
7-53 生化危机——dfs
人类正在经历一场生化危机,许多城市已经被病毒侵袭,这些城市中的人们为了避免感染病毒,计划开车逃往其他没有被病毒入侵的城市(安全城市)。有些城市之间有公路直达,有些没有。虽然他们知道哪些城市是安全的,但是不知道有没有一条安全路径能够到达安全城市(只有该路径上经过的所有城市都是安全的,该路径才是安全路径)。请你编写一个程序帮助他们判断。输入格式:输入第一行为三个正整数,分别表示所有城市个数m(m原创 2022-12-01 14:19:20 · 487 阅读 · 0 评论 -
7-51 愿天下有情人都是失散多年的兄妹——dfs
呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚?输入格式:输入第一行给出一个正整数N(2 ≤ N ≤10^4),随后N行,每行按以下格式给出一个人的信息:本人ID 性别 父亲ID 母亲ID其中ID是5位数字,每人不同;性别M代表男性、F代表女性。如果某人的父亲或母亲已经不可考,则相应的ID位置上标记为-1。原创 2022-12-01 10:49:27 · 489 阅读 · 0 评论 -
7-45 工作分配问题——一选多dfs
设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij。设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。输入格式:输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。输出格式:将计算出的最小总费用输出到屏幕。输入样例:在这里给出一组输入。例如:310 2 32 3 43 4 5输出样例:在这里给出相应的输出。例如:9。原创 2022-11-30 14:42:22 · 305 阅读 · 0 评论 -
7-43 最佳调度问题——一选多dfs
假设有n(n原创 2022-11-30 14:16:10 · 612 阅读 · 1 评论 -
7-42 子集和问题——组合子集
设集合S={x1,x2,…,xn}是一个正整数集合,c是一个正整数,子集和问题判定是否存在S的一个子集S1,使S1中的元素之和为c。试设计一个解子集和问题的回溯法,并输出利用回溯法在搜索树(按输入顺序建立)中找到的第一个解。输入格式:输入数据第1行有2个正整数n和c,n表示S的大小,c是子集和的目标值。接下来的1行中,有n个正整数,表示集合S中的元素。是子集和的目标值。接下来的1 行中,有n个正整数,表示集合S中的元素。原创 2022-11-30 11:57:54 · 1083 阅读 · 0 评论 -
7-38 找零钱***——组合型选与不选
收银员现有 n 张面值分别为 v1,v2,…,vn的纸币。若找零金额为 m,则一共有多少种找零方法?注:0原创 2022-11-30 10:27:55 · 329 阅读 · 0 评论 -
7-22 图中最深的根——并查集+dfs树深
一个连通的无环图可以看做是一棵树,但选定不同的结点作为根的话,树的结构会不同,树的高度也会不一样,现在需要你找到能形成最高树的根,也就是最深根。输入格式:首先在第一行给出结点的数目N,N小于10000,结点从1开始编号,随后N-1行,依次给出N-1条边。输出格式:对每一组输入,输出最深根的编号,如果有多个,则按从小到大的顺序输出,每行输出一个。如果不能构成树,则统计图有多少个连通块,输出“Error: K components”,其中K是连通块的数目。输入样例1:在这里给出一组输入。原创 2022-11-27 17:43:07 · 374 阅读 · 0 评论 -
P1032 [NOIP2002 提高组] 字串变换——dfs、bfs
本题疑似错题,不保证存在靠谱的多项式复杂度的做法。测试数据非常的水,各种做法都可以通过,不代表算法正确。因此本题题目和数据仅供参考。原创 2022-11-07 12:11:40 · 365 阅读 · 1 评论 -
P1596 [USACO10OCT]Lake Counting S——dfs连通块
由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个N×M(1≤N≤100,1≤M≤100)的网格图表示。每个网格中有水(W) 或是旱地(.)。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约翰想弄清楚他的田地已经形成了多少水坑。给出约翰田地的示意图,确定当中有多少水坑。输入第1N和M。第2行到第N+1行:每行M个字符,每个字符是W或.,它们表示网格图中的一排。字符之间没有空格。输出一行,表示水坑的数量。原创 2022-11-07 08:28:23 · 250 阅读 · 0 评论 -
P1101 单词方阵——dfs
给一n×n的字母方阵,内可能蕴含多个yizhong单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有可能共用字母。输出时,将不是单词的字母用*代替,以突出显示单词。原创 2022-11-05 11:54:54 · 455 阅读 · 0 评论 -
P1019 [NOIP2000 提高组] 单词接龙——dfs
注意:本题为上古 NOIP 原题,不保证存在靠谱的做法能通过该数据范围下的所有数据。原创 2022-11-05 10:23:48 · 422 阅读 · 0 评论 -
P1433 吃奶酪——dfs+状态压缩剪枝
房间里放着n块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处。原创 2022-11-04 09:29:34 · 555 阅读 · 0 评论 -
P1135 奇怪的电梯——dfs+剪枝
呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第i层楼(1≤i≤N)上有一个数字Ki(0≤Ki≤N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3,3,1,2,5代表了Ki(K1=3,K2=3,……),从1楼开始。在1楼,按“上”可以到4楼,按“下”是不起作用的,因为没有−2楼。那么,从A楼到B。原创 2022-11-02 10:14:45 · 165 阅读 · 0 评论 -
P1219 [USACO1.5]八皇后 Checker Challenge——dfs剪枝优化
一个如下的6×6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列246135来描述,第i个数字表示在第i行的相应位置有一个棋子,如下:行号123456列号246135这只是棋子放置的一个解。请编一个程序找出所有棋子放置的解。并把它们以上面的序列方法输出,解按字典顺序排列。请输出前3个解。最后一行是解的总个数。原创 2022-10-31 14:08:33 · 119 阅读 · 2 评论 -
水儿的绘画——dfs连通块+暴力枚举
听说最新的流行趋势绘画册是一张图画上有两片连续图案, 水儿画了一大堆两片图案的图画。不幸的是, 时尚潮流往往变化很快, 而且最流行的时尚变成是只有一片图案的图画!水儿想让她的画更时尚, 把她的每一幅画挂在在墙上, 想把两片连续图案合为一片图案的方法。水儿的画用 N 乘 M(1原创 2022-10-31 13:06:27 · 246 阅读 · 0 评论 -
P1002 [NOIP2002 普及组] 过河卒
dfs了一发,谁着超时了。原创 2022-05-04 00:28:43 · 571 阅读 · 0 评论 -
P2036 [COCI2008-2009#2] PERKET——dfs
Perket 是一种流行的美食。为了做好 Perket,厨师必须谨慎选择食材,以在保持传统风味的同时尽可能获得最全面的味道。你有n种可支配的配料。对于每一种配料,我们知道它们各自的酸度s和苦度b。当我们添加配料时,总的酸度为每一种配料的酸度总乘积;总的苦度为每一种配料的苦度的总和。众所周知,美食应该做到口感适中,所以我们希望选取配料,以使得酸度和苦度的绝对差最小。另外,我们必须添加至少一种配料,因为没有任何食物以水为配料的。原创 2022-10-28 16:13:52 · 239 阅读 · 0 评论 -
P2392 kkksc03考前临时抱佛脚——dfs+剪枝
kkksc03 的大学生活非常的颓废,平时根本不学习。但是,临近期末考试,他必须要开始抱佛脚,以求不挂科。原创 2022-10-28 14:19:12 · 481 阅读 · 0 评论 -
满足等式关系的全排列——dfs+剪枝
数字1 -13 中 选择 12个不同的数 ,组成满足下面加减乘除的等式关系,求解有多少种方案满足如下关系:a1+a2=a3 a4-a5=a6 a7*a8=a9 a10/a11=a12。原创 2022-10-26 17:00:02 · 430 阅读 · 0 评论 -
P1088 [NOIP2004 普及组] 火星人——dfs+剪枝
人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。火星人用一种非常简单的方式来表示数字――掰手指。火星人只有一只手,但这只手上有成千上万的手指,这些手指排成一列,分别编号为1,2,3,⋯。火星人的任意两根手指都能随意交换位置,他们就是通过这方法计数的。原创 2022-10-26 10:02:54 · 210 阅读 · 1 评论 -
P1157 组合的输出——dfs
排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r≤n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。现要求你输出所有组合。例如n=5,r=3123,124,125,134,135,145,234,235,245,345。原创 2022-10-25 16:20:31 · 317 阅读 · 0 评论 -
T1214 鸣人和佐助——dfs、bfs
佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢?原创 2022-10-14 13:41:39 · 342 阅读 · 1 评论 -
T1213 拯救行动——dfs、bfs
此题是求最短时间,需要用最短路bfs的形式,无回溯比较快;正常情况下最先搜到的一定最优,但此题存在守卫,有的边权是+2,可能bfs后面搜到的会更优,所以采用小根堆,改变排序规则;bfs也是需要vis的,放过的点就不用重复放进队列了,也不用回溯;最短路还是用bfs吧,虽然dfs用着爽,但是遇次题,超一次;原创 2022-10-14 09:38:32 · 418 阅读 · 0 评论 -
T1212 仙岛求药——dfs 剪枝
此题需要剪枝才能过,不然超时,多用了一个dis数组去记录到达每个点最少经过次数,如果当前cnt>dis,或者cnt已经比已得到临时答案大了,可以直接return;这种搜索的思路比较简单,和红与黑差不多;,因为dfs重复的情况太多,容易超时。原创 2022-10-12 17:30:14 · 422 阅读 · 0 评论 -
T3677 道生一——dfs
直接提交不对,需要文件的输入输出方式解题,然后用文件后,内存超限,可能不能搜索,毕竟b太大了,记录下dfs的思想吧,没过去这个题。原创 2022-09-25 17:45:54 · 141 阅读 · 0 评论 -
T1725 国王的魔镜——dfs
【代码】T1725 国王的魔镜——dfs。原创 2022-09-25 10:21:24 · 248 阅读 · 0 评论 -
T1495 那些N位数——dfs
其实就是一个全排列,把1到p这些数,全排列在一个四位数上;在dfs中要注意是0到p,而不是到n,因为是枚举这p个数;原创 2022-09-24 21:31:20 · 167 阅读 · 0 评论 -
T1204 全排列——dfs
【代码】T1204 全排列——dfs。原创 2022-09-24 20:17:20 · 185 阅读 · 0 评论 -
1222:放苹果
题目描述】把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1是同一种分法。【输入】第一行是测试数据的数目t(0≤t≤20)。以下每行均包含二个整数M和N,以空格分开。1≤M,N≤10。【输出】对输入的每组数据M和N,用一行输出相应的K。【输入样例】173【输出样例】8。...原创 2022-07-17 12:41:35 · 289 阅读 · 0 评论 -
1221:分成互质组
题目描述】给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?【输入】第一行是一个正整数n。1≤n≤10。第二行是n个不大于10000的正整数。【输出】一个正整数,即最少需要的组数。【输入样例】6【输出样例】3。...原创 2022-07-17 11:27:59 · 1109 阅读 · 1 评论 -
1220:单词接龙
题目描述】单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at和atide间不能相连。【输入】...原创 2022-07-16 15:06:09 · 591 阅读 · 0 评论 -
1219:马走日
题目描述】马在中国象棋以日字形规则移动。请编写一段程序,给定n×m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。【输入】第一行为整数T(T...原创 2022-07-16 12:10:17 · 264 阅读 · 0 评论 -
1218:取石子游戏
题目描述】有两堆石子,两个人轮流去取。每次取的时候,只能从较多的那堆石子里取,并且取的数目必须是较少的那堆石子数目的整数倍,最后谁能够把一堆石子取空谁就算赢。比如初始的时候两堆石子的数目是25和7。选手1取选手2取选手1取选手2取选手1取最后选手1(先取的)获胜,在取的过程中选手2都只有唯一的一种取法。给定初始时石子的数目,如果两个人都采取最优策略,请问先手能否获胜。【输入】输入包含多数数据。每组数据一行,包含两个正整数a和b,表示初始时石子的数目。...原创 2022-07-16 11:09:35 · 697 阅读 · 0 评论 -
1217:棋盘问题——dfs
题目描述】在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。【输入】输入含有多组测试数据。每组数据的第一行是两个正整数n,k,用一个空格隔开,表示了将在一个n×n的矩阵内描述棋盘,以及摆放棋子的数目。(n≤8,k≤n)当为−1−1时表示输入结束。随后的n行描述了棋盘的形状。...原创 2022-07-15 13:53:46 · 1908 阅读 · 0 评论 -
1216:红与黑
题目描述】有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。【输入】包括多组数据。每组数据的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下1)‘.’黑色的瓷砖;2)‘#’白色的瓷砖;3)‘@’黑色的瓷砖,并且你站在这块瓷砖上。该字符在每组数据中唯一出现一次。...原创 2022-07-15 11:47:56 · 225 阅读 · 0 评论 -
1215:迷宫
题目描述】一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n×n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能办到。如果起点或者终点有一个不能通行(为#),则看成无法办到。【输入】第1行是测试数据的组数k,后面跟着k组输入。...原创 2022-07-15 10:09:46 · 507 阅读 · 0 评论