尝试在java中编写代码。请建议适用于此方案的任何算法。 输入是:
Col A Col B
A B
A C
B D
C A
C B
C E
D A
D B
E A
我正在尝试组合输出:
A B D A
A C A
A C B D A
A C E A
B D B
C A B D A C
C A C
C B D A C
C E A C
|
|
|
等等。 输出应该具有相同的起点和终点。
另一种看待它的方法是,你从一个节点A开始,你必须回到节点A,所以你的路径是从A到B然后是B到D(因为从B到你只能去一个节点即D),然后D到A.因此,col A和Col B为您提供了可能的路径,例如A,您只能转到B和C,而不是D和E.我希望这会有所帮助。 还有,有没有办法限制否。解决方案的节点?
请提出一些建议。
答案 0 :(得分:0)
你需要使用递归,当你通过数据递归时,你需要标记你去过的地方,这样你就不会无限地走同一条路径,
答案 1 :(得分:0)
根据您的数据,您有五个不同节点的集合 - A,B,C,D和E.
如果我们将它们组合在一起,那么我们将得到与什么有关的映射:
A: [B, C]
B: [D]
C: [B, E]
D: [A, B]
E: [A]
以上代表sparse graph。除了B-> D-> B之外,节点不直接从另一个节点连接回自身。
以下是我如何处理它的流程。
对我到达的主节点以及此节点所连接的边缘使用Map<String, List<String>
。
选择一个起始节点 a 。将其链接放入堆栈。
这种遍历方式是depth first search。你要深入到图表中,直到你走上你的路径或用尽你的选择。