2024牛客寒假营1||补题
A-DFS搜索
题意
给一个字符串,判断其中是否包含dfs
子序列和DFS
子序列。
数据范围
$T(1≤T≤100)$
$n(1≤n≤50)$
思路
直接搜。
参考代码
|
|
给一个字符串,判断其中是否包含dfs
子序列和DFS
子序列。
$T(1≤T≤100)$
$n(1≤n≤50)$
直接搜。
|
|
上课讲过一大堆这里不再赘述,直接学习代码实现。
例图展示:
graph LR v1((v1))--4-->v2((v2)) v1((v1))--9-->v6((v6)) v3((v3))--19-->v2((v2)) v3((v3))--22-->v1((v1)) v4((v4))--17-->v3((v3)) v5((v5))--29-->v8((v8)) v6((v6))--12-->v1((v1)) v6((v6))--9-->v5((v5)) v6((v6))--4-->v7((v7)) v7((v7))--25-->v4((v4)) v8((v8))--7-->v7((v7)) v8((v8))--11-->v3((v3))
设n个点,m条边
上图的数据(按照 起点-终点-权值):
|
|
初始化O(n^2)时间,建图O(m)时间
、空间开销大O(n^2)
前向星涉及排序,所以其时间复杂度和排序算法有关,一般情况下时间复杂度为O(mlog m)
,空间上需要两个数组(记录边的边数组、记录各点在边数组中起始位置的head数组),空间复杂度为O(m+n)
简称BF(Brute Force)算法。
没什么好说的,就是看到描述直接能想到的朴素做法。
|
|
BF算法的时间复杂度不稳定。匹配成功时,最好为O(n)
,最差为O(mn)
;匹配失败时,最好为最好为O(n)
,最差为O(mn)
。平均时间复杂度为O(n)
。