深度优先搜索
Java硬件工程师
中国科学技术大学毕业,原支付宝Java开发工程师,立志做一名资深全栈工程师
展开
-
深度优先搜索之踩方格问题
问题描述有一个方格矩阵,矩阵边界在无穷远处,我们做如下假设:a.每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;b.走过的格子立即塌陷无法再走第二次c.只能向北、东、西三个方向走请问:如果允许在方格矩阵上走n步(n<=20),共有多少种不同的方案,2种走法只要有一步不一样,即被认为是不同的方案。输入允许在方格上行走的步数n(n≤20)。输出计算出的方案数量。样例输入2样例输出7解题思路递归从(i,j)出发,走n步的方案数,等于以下三项之和从(i+1,原创 2020-08-31 13:01:44 · 2387 阅读 · 0 评论 -
深度优先搜索之城堡问题
问题描述下图是一个城堡的地形图,请你编写一个程序,计算城堡一共有多少个房间,最大的房间有多大。城堡被分割成mxn(m<=50,n<=50)个方块,每个方块可以有4面墙。#代表墙,|-代表不是墙,走的通的就是一个房间输入程序从标准输入设备读入数据。第一行是两个整数,分别是南北向、东西向的方块数。在接下来的输入行里,每个方块用一个数字(0≤p≤50)描述。用一个数字表示方块周围的墙,1表示西墙, 2表示北墙, 4表示东墙, 8表示南墙。每个方块用代表其周围墙的数字之和表示。城堡的内墙被原创 2020-08-31 10:41:14 · 1929 阅读 · 0 评论 -
深度优先搜索之图的表示方法
邻接矩阵用一个二维数组G存放图,G[i][j]表示节点i和结点j之间的边的情况(如有无边,边方向,权值大小等)。遍历复杂度:O(n2) n为节点数目(每个结点都需要走一次,下一次不会再走,当考察一个结点的时候,会考察跟这个结点相邻的所有结点,在邻接矩阵中,如何考察,就要看数组G的第i行。每个点需要考察一行)邻接表每个结点V对应一个一维数组(Vector),里面存放从V连出去的边,边的信息包括另一顶点,还可能包含边权值在边稀疏的情况下,遍历整个图的时间复杂度就比较好,是O(n+e),n为节点数原创 2020-08-31 10:36:49 · 1650 阅读 · 0 评论 -
深度优先搜索之在图上寻找路径
寻路问题在图上如何寻找从1到8的路径一种策略:只要能发现没走过的点,就走到它。有多个点可走就随便挑一个,如果无路可走就回退,再看看有没有走过的点可走在图上如何寻找从1到8的路径运气最好:1->2->4->8运气稍差:1->2->4->5->6->8运气坏:1->3->7->9=>7->A=>7=>3->5->6->8(双向箭头表示回退)不连通的图,无法从结点1走到结点8完整的尝试过原创 2020-08-31 10:35:27 · 2970 阅读 · 0 评论