depth-first-search

    3热度

    1回答

    我正在学习有关HLD,我发现我需要4两件事: 给定一个节点,知道它的链条; 给定一个节点,知道它在链中的位置; 给定一个链,知道它的头; 给定一个链,知道它的长度。 我能够做这4件事情中的3件,但我不能做第二件事。 我在树上使用了一个dfs,并且我想知道是否可以在我的代码中添加一些东西来解决第二个问题。 下面是代码: #define maxn 1010 int SizeOf[maxn], Sp

    -2热度

    1回答

    我打算在C++中实现DFS使用堆栈,但不知何故此代码给我段错误。在首次推入main后,我使用gdb检查了它的segfaults。我错过了什么? #include<iostream> #include<algorithm> #include<vector> #include<stack> #define MAX_N 5001 using namespace std; vector< v

    0热度

    1回答

    我试图解决从UVA在线法官网站,特别是539问题,我需要使用DFS找到最长的路径,我可以解决它的迫切需求,但我想用功能更强大的惯用方式来使用scala,问题是当算法从分支返回时,数据结构不会更新以供其他分支使用,不想使用瓦尔,又无副作用,我的继承人代码: type Vertex=Int type Graph = Map[Vertex,Set[Vertex]] def DFS(start:

    -1热度

    2回答

    这是任务:给出一个迷宫,它由N×N个正方形组成,每个正方形都可以通过或不通过。可移动单元由“a”和“z”之间的较低拉丁字母组成,不可通过 - “#”。其中一个正方形是杰克。它标有“*”。 两个正方形是邻居,如果他们有共同的墙。杰克可以从一个可通行的广场通往其邻近的可通行广场。当杰克穿过可通行的广场时,他写下了每个广场上的字母。在每个出口他都会说一句话。写一个程序,从给定的迷宫中打印出杰克从所有可能

    0热度

    2回答

    当前我正在使用深度优先搜索来恢复值的项目,但我只能回显值,但我不知道如何将值存储到变量中。 这里是我的代码 function calculate_ttl_member_agent ($conn, $id) { $id_val = $level = ""; $search_dl_sql = "select * from table where foreign_ID = ".$id; $sear

    -1热度

    1回答

    我无法弄清楚如何实施下面的contains方法。我试图使用深度优先搜索来查找树是否包含值,但我不确定我的实现有什么问题。 class Tree { constructor(val) { this.value = val; this.children = []; } addChild(val) { this.children.push(n

    8热度

    2回答

    在深度优先搜索的算法果壳中的(第2版)的解释(DFS),笔者使用的3个状态的顶点,说白(不访问),灰色(已未访问过的邻居),黑色(已访问)。 两个国家(白色和黑色)是足够横移。为什么添加灰色状态?它用于什么?

    2热度

    1回答

    问题包括在有向图中进行深度优先搜索以找到可以从特定节点到达的所有节点。下面给出的解决方案在codechef上给出了错误的结果。但是我找不到任何测试用例,这可能会产生与通常的DFS算法不同的结果。 我知道我可以直接实现正确的算法来获得正确的结果,但我想知道为什么我的解决方案是不正确的,以便将来不再重复。请帮助我确定这个解决方案有什么问题。该代码是注释,解释我的做法 #include <iostrea

    -1热度

    1回答

    列表可以更深或更浅,但说我有深度2的列表如下: a = [['a','b'],['c','d'],['e','f']] 我想编写一个函数,f(a),这样它会返回以下新的列表: ['acef', 'adef', 'bcef', 'bdef'] 从本质上讲,我模仿深度优先搜索,其中列表是节点。我希望函数能够在depth = n的情况下工作,其中n是任意整数。什么是达到这个最pythonic方式

    2热度

    3回答

    使用将节点标记为未访问,已发现或已完成(或白色,灰色,黑色)的递归DFS,可以根据三类(后缘,树/前缘,交叉边缘)对边缘进行分类。 我们是否也可以使用算法的迭代版本对比边缘(参见Depth-First Search)? procedure DFS-iterative(G,v): 2 let S be a stack 3 S.push(v) 4 while S is not empty