我有一个有4个成员的数组,我需要尝试所有循环组合,如
0 -> 1 -> 3 -> 2
0 -> 1 -> 2 -> 3
0 -> 2 -> 1 -> 3
0 -> 2 -> 3 -> 1
0 -> 3 -> 2 -> 1
0 -> 3 -> 1 -> 2
这将导致6种不同的结果,然后我将比较这些结果并找到最佳结果。我浪费了我的时间和时间去做那个递归循环,但我无法做到。
答案 0 :(得分:0)
您可以使用一些强力算法找到所有路径。但是暴力算法很慢并且需要花费很多时间。您可以使用动态编程来提高速度和减少时间,而不是暴力。旅行推销员与你的问题不同,但它给你的主要想法。
答案 1 :(得分:0)
使用DFS访问图表中的节点,如下所示:
DFS(i,path) {
visited[i] = true
neighbours = cal_neighbours(i)
has_valid_neighbour = false
for n in neighbours {
if(!visited[n]) {
DFS(n,path+"->"+n)
has_valid_neighbour = true
}
}
if(!has_valid_neighbour) {
print(path)
}
visited[i] = false
}
致电:DFS(0,“0”);