我试图在图表中找到最长的路径,但是在返回最长的路径时我遇到了麻烦。我已经计算出递归并且可以跟随输出但是我无法获得正确的输出。该程序目前返回几个路径。
预计产量是从拉斯维加斯开始的:[拉斯维加斯,盐湖城,丹佛,海伦娜,温尼伯,德卢斯]
我的深度优先搜索方法:
public void dfs(City before, ArrayList<String> listOfCities){
System.out.println(before +"-->"+ before.getAdjCities());
List<City> neighbours = before.getAdjCities();
before.setVisited(true);
for (int i = 0; i < neighbours.size(); i++) {
City n = neighbours.get(i);
if(!n.visited){
listOfCities.add(n.getCityName());
System.out.println(i+ " Test: " + listOfCities.toString());
dfs(n, listOfCities);
}
}
}
这是输出:
这是图表:
答案 0 :(得分:2)
您的ListOfCities在搜索的所有分支中都是静态的,这就是为什么它最终会覆盖所有城市。每个城市的递归步骤应该比较每个邻居的DFS结果来构建结果。