gpt4 book ai didi

Java递归查找图上的所有路径

转载 作者:行者123 更新时间:2023-11-30 04:52:53 25 4
gpt4 key购买 nike

好的,问题的背景:

我正在编写一个小应用程序,它可以查看图表并查看来自任意两个给定点的所有路径。

点是A B C D E,图上的连接如下...

A->B, A->D, A->E

B->C

C->D, C->E

D->C, D->E

E->B

我需要对其进行编码,以便它查看小于特定长度(例如 30)的所有可能路径。该规范的奇怪之处在于它可以将目的地作为路径的一部分来访问,例如:

从C开始到C可以遵循:

CDC、CEBC、CEBCDC、CDCEBC、CDEBC、CEBCEBC、CEBCEBCEBC

现在我的代码如下...

private void findAllPaths(LinkedList path, Junction node, Junction end)
{
path.add(node);
if(node == end && path.size() > 1)
{
System.out.println(path);
}
else
{
for(Road r : node.getAdjacencies())
{
if(path.size() < 30) findAllPaths(path, r.getTarget(), end);
}
}
}

这给了我路径:[C,D,C] [C,D,C,E,B,C] [C,D,C,E,B,C,E,B,C]

我的问题是递归似乎没有按照我期望的方式发生。它只遵循每个节点的第一个邻接关系,并且永远不会递归回去尝试其他节点。

如果有人能看到我哪里出了可笑的错误或看到我的问题,请发帖!我们将不胜感激所有帮助...

干杯,

Djooodle

最佳答案

尝试后您不会再次删除该节点:

private void findAllPaths(LinkedList path, Junction node, Junction end)
{
path.add(node);
// etc...
path.removeLast();
}

关于Java递归查找图上的所有路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9482810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com