找出图中最长的路径
Find the longest path in graph
我试图在图中找到最长的路径,但在返回最长路径时遇到了问题。我已经弄清楚了递归并且可以跟随输出但是我无法获得正确的输出。该程序目前有 returns 条路径。
从拉斯维加斯出发时的预期输出:[拉斯维加斯、盐湖城、丹佛、海伦娜、温尼伯、德卢斯]
我的深度优先搜索方法:
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);
}
}
}
这是输出:
这是图表:
您的 ListOfCities 在搜索的所有分支中都是静态的,这就是它最终包含所有城市的原因。每个城市的递归步骤应该比较每个邻居的 DFS 结果来构建结果。
我试图在图中找到最长的路径,但在返回最长路径时遇到了问题。我已经弄清楚了递归并且可以跟随输出但是我无法获得正确的输出。该程序目前有 returns 条路径。
从拉斯维加斯出发时的预期输出:[拉斯维加斯、盐湖城、丹佛、海伦娜、温尼伯、德卢斯]
我的深度优先搜索方法:
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);
}
}
}
这是输出:
这是图表:
您的 ListOfCities 在搜索的所有分支中都是静态的,这就是它最终包含所有城市的原因。每个城市的递归步骤应该比较每个邻居的 DFS 结果来构建结果。