Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 连续路径的递归搜索_Java_Search_Recursion - Fatal编程技术网

Java 连续路径的递归搜索

Java 连续路径的递归搜索,java,search,recursion,Java,Search,Recursion,我正试图在各种各样的地图上搜索。有城镇对象和路径对象。城镇通过城镇名称与道路相连。例如,如果你有一个城镇的名字,你有第二个城镇的名字,你可以看到他们是否有一条路。玩家可以控制路径,如果他们控制了,路径就会改变颜色 我想递归地搜索路径,看看我是否通过路径从一个城镇连接到另一个城镇。我已经包括了一张我正在尝试做的图片。开始是开始参数,结束是结束。双线是我控制的路径,并将我的颜色附加到它们上 现在代码是如何编写的,我将被困在第二个城镇,因为它会发现这是我拥有的路径,并将其标记为已访问。我知道我必须以某

我正试图在各种各样的地图上搜索。有城镇对象和路径对象。城镇通过城镇名称与道路相连。例如,如果你有一个城镇的名字,你有第二个城镇的名字,你可以看到他们是否有一条路。玩家可以控制路径,如果他们控制了,路径就会改变颜色

我想递归地搜索路径,看看我是否通过路径从一个城镇连接到另一个城镇。我已经包括了一张我正在尝试做的图片。开始是开始参数,结束是结束。双线是我控制的路径,并将我的颜色附加到它们上

现在代码是如何编写的,我将被困在第二个城镇,因为它会发现这是我拥有的路径,并将其标记为已访问。我知道我必须以某种方式回溯,但我不确定我将如何去做

public boolean continuousPath(Town start, Town end)
{
    //search for towns with the same name
    //as the starting town 
    for(Path p : paths)
    {
        if(p.getStartTown().equals(start))
        {
            matches.add(p); //add it to an arraylist of matches
        }
    }

    //for the matches arrayList
    for(Path pa: matches)
    {
        if(pa.getEndTown().equals(end)){
            matches.clear();
            return true;
        }
        else{
            if(!alreadyVisited(r)){
                if(p.getPlayerColor().equals(colorArray[playerTurn]))
                {
                    visited.add(r);
                    matches.clear();
                    Town tempTown = r.getEndTown();
                    continuousPath(tempTown, end);
                }
            }
        }
    }
    return false;
}

public boolean alreadyVisited(Path p)
{
    for(Path pathInstance : visited){
        if(p.getName().equals(pathInstance.getName()))
        {
            return true;
        }
    }
    return false;
}
我正在尝试做的事情的图片:


您所做的就是所谓的图遍历。看看Dijkstra的算法,它可能是最直接的图形遍历


谢谢!在我的例子中,如果不是从起点开始,而是从起点开始,它就会知道我走的是那些道路。如果我没问题,我会投票的!如果您想表示感谢,请选择我的答案作为解决方案:)