
算法_DFS
慢熱乖友
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
DFS_7:加分二叉树
DFS_7:加分二叉树 题目描述 设一个 nn 个节点的二叉树tree 的中序遍历为(1,2,3,…,n),其中数字 1,2,3,…,n 为节点编号。每个节点都有一个分数(均为正整数),记第 i 个节点的分数为di。tree 及它的每个子树都有一个加分,任一棵子树 subtree(也包含tree 本身)的加分计算方法如下: subtree 的左子树的加分× subtree 的右子树的加分 +subtree 的根的分数。 若某个子树为空,规定其加分为 1,叶子的加分就是叶节点本身的分数。不考虑它的空子树。 试原创 2021-03-13 20:55:37 · 204 阅读 · 0 评论 -
DFS_6:单词接龙
DFS_6:单词接龙 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast 和 astonish,如果接成一条龙则变为 beastonish,另外相邻的两部分不能存在包含关系,例如 at 和 atide 间不能相连。 输入格式 输入的第一行为一个单独的整数 nn 表示单词数,以下 nn 行每行有一个单词,输入的最后一行为一个单个字符,表示“原创 2021-03-13 20:24:58 · 106 阅读 · 0 评论 -
DFS_5:八皇后
DFS_5:八皇后 一个如下的6×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。 上面的布局可以用序列 2 4 6 1 3 5 来描述,第 i个数字表示在第 i行的相应位置有一个棋子,如下: 行号 1 2 3 4 5 6 列号2 4 6 1 3 5 这只是棋子放置的一个解。请编一个程序找出所有棋子放置的解。 并把它们以上面的序列方法输出,解按字典顺序排列。 请输出前 3 个解。最后一行是解的总个数。 输入格式 一行一个正整数原创 2021-03-13 11:25:20 · 141 阅读 · 0 评论 -
DFS_4:连通块数量
DFS_4:连通块数量 问题分析: 为什么DFS能求连通块的数量?这篇文章应该发表在01迷宫文章之前才对,因为01迷宫如果用DFS的话,那求的就是每个连通块里面的小块有多少个,其实说白了,01迷宫 就是利用了DFS+VIS染色记录的原理。目前这题求连通块的数量比较简单,因为他不用记录每个连通块里面的小块有多少个,只需要DFS就能完成。此外,回答一开头的问题,其实是因为DFS能一条路走到黑,也就是能遍历完所有点,所以才能求得连通块的数量。此外BFS也能求连通块的数量。 输入输出: 5 5 0 0 1 1 1原创 2021-03-13 10:08:16 · 541 阅读 · 0 评论 -
DFS_3:01迷宫
DFS_3:01迷宫 题目描述 有一个仅由数字00与11组成的n \times nn×n格迷宫。若你位于一格00上,那么你可以移动到相邻44格中的某一格11上,同样若你位于一格11上,那么你可以移动到相邻44格中的某一格00上。 你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身) 一、pandas是什么? 输入格式 第11行为两个正整数n,m。 下面n行,每行n个字符,字符只可能是0或者1,字符之间没有空格。 接下来m行,每行2个用空格分隔的正整数i,ji,j,对应了迷宫中第i行第j原创 2021-03-13 09:27:26 · 565 阅读 · 0 评论 -
DFS_2:迷宫问题
DFS_2:迷宫问题 1.是否可达 2.可达路径的条数 问题分析 其实迷宫问题用DFS和BFS都可以,关键是要分清楚DFS和BFS的区别在哪里,BFS是按照队列的方式进行每一层的压入和弹出的,所以BFS能找到最短的路径,却无法得到路径的条数,因为找到终点条件成立的时候就已经结束BFS了。但是DFS不一样,DFS利用递归来暴力搜索,所以当找到一个终点的时候只是结束了当前这个点的递归,返回到上一层寻找另外方向的搜索,所以DFS不仅能判断是否可达,还能清楚得记录出路的条数。 代码块 import java.uti原创 2021-03-12 16:32:39 · 111 阅读 · 0 评论 -
DFS_1:全排列问题
DFS_1:全排列问题 输出自然数 11 到 nn 所有不重复的排列,即 nn 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。 输入格式 一个整数 nn。 输出格式 由 1 \sim n1∼n 组成的所有不重复的数字序列,每行一个序列。 每个数字保留 5 个场宽。 样例: 输入: 3 输出: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 注意的问题 1.在java中的输出格式问题 2.理原创 2021-03-12 16:13:15 · 375 阅读 · 0 评论