C++ C++;递归回溯

C++ C++;递归回溯,c++,C++,我正在尝试进行递归回溯,以找到从点0到点8的路径。我已经定义了路径,但是它变为0 1 2,然后停止。有人能帮忙吗 #include <iostream> #include <vector> using namespace std; vector< vector<int> > roads; void find_path(int Point = 0) { cout << Point; int rds = roads.si

我正在尝试进行递归回溯,以找到从点0到点8的路径。我已经定义了路径,但是它变为0 1 2,然后停止。有人能帮忙吗

#include <iostream>
#include <vector>
using namespace std;

vector< vector<int> > roads;

void find_path(int Point = 0) {
    cout << Point;
    int rds = roads.size();
    for(int i = 0; i < rds; i++) {
        find_path(roads[Point][i]);
    }
}

main() {

    roads.resize(8);
    //VNESUVANJE PATISTA
    roads[0].push_back(1);
    roads[0].push_back(3);
    roads[1].push_back(2);
    roads[3].push_back(4);
    roads[3].push_back(6);
    roads[4].push_back(5);
    roads[4].push_back(7);
    roads[7].push_back(8);
    find_path();
    return 0;
}
#包括
#包括
使用名称空间std;
矢量<矢量>道路;
无效查找路径(int点=0){

我做了一些改变,我想现在它可以正常工作了

#include <iostream>
#include <vector>
using namespace std;

vector< vector<int> > roads;
int path_finded = 0; //Added new variable to know if path is finded.

void find_path(int Point = 0) {
    if(Point == 8) { //Checks if the point where we are is 8 and if it is stops the whole thing and chages path_finded to 1

        path_finded = 1;
        return;
    }
    int rds = roads[Point].size();//changed roads.size to roads[Point].size so it gives the size of the possible roads from the point where we are.
    for(int i = 0; i < rds; i++) {
        find_path(roads[Point][i]);
    }
    return;
}

main() {

    roads.resize(8);
    //VNESUVANJE PATISTA
    roads[0].push_back(1);
    roads[0].push_back(3);
    roads[1].push_back(2);
    roads[3].push_back(4);
    roads[3].push_back(6);
    roads[4].push_back(5);
    roads[4].push_back(7);
    roads[7].push_back(8);
    find_path();
    if(path_finded == 1) cout << "RABOTI"; //prints if it works.
    return 0;
}
#包括
#包括
使用名称空间std;
矢量<矢量>道路;
int path_find=0;//添加了新变量以了解路径是否已找到。
无效查找路径(int点=0){
if(Point==8){//检查我们所在的点是否为8,如果为,则停止整个过程,并将路径_更改为1
找到的路径=1;
返回;
}
int rds=roads[Point].size();//将roads.size更改为roads[Point].size,因此它给出了从我们所在点开始的可能道路的大小。
对于(int i=0;i如果(path_finded==1)不能,那么find_path()怎么知道它什么时候完成了呢?当它调用find_path(7)时,只有一条路可以走,那就是8。当它是8时,就没有路可以走了,所以它应该会自动停止。(我想:/)谢谢。你应该能够在
if(Point==8)
if(Point==roads.size())中概括8
也许吧。是的,但我只是在测试它是否有效,因为我正试图用这个想法解决一个有点拥挤的问题,但我认为我无法做到。