如何在深度优先搜索 C++ 中备份到较早的值?
How can I back up to an earlier value in Depth-First Search c++?
在这里,我正在用 C++ 实现深度优先搜索 (DFS)。但是,我似乎无法找到一种方法来备份到以前的位置(即 1->2->3 如果 3 是行尾返回 2)
我可以使用向量或堆栈来跟踪我的动作吗?
int searcher(int line[3], int lineNumber) {
int value = 0;
if (line[0] == 1) {
if (hasRunLine[lineNumber+1] != 1) {
value = lineNumber + 1;
} else {
value = -1; // here it needs to go back and check whether it is at the start
}
} else if (line[0] = 2) {
if (hasRunLine[line[1]] != 1) {
value = line[1];
} else {
value = -1; // here too
}
} else {
if (hasRunLine[line[1]] != 1) {
value = line[1];
} else if (hasRunLine[line[2]] != 1) {
value = line[2];
} else {
value = -1; // here too
}
}
if (value <= maximum && value >= 2) {
return value;
} else {
return -1; // here too
}
}
使用 vector
并在每次切换到不同位置时添加新动作。
在这里,我正在用 C++ 实现深度优先搜索 (DFS)。但是,我似乎无法找到一种方法来备份到以前的位置(即 1->2->3 如果 3 是行尾返回 2)
我可以使用向量或堆栈来跟踪我的动作吗?
int searcher(int line[3], int lineNumber) {
int value = 0;
if (line[0] == 1) {
if (hasRunLine[lineNumber+1] != 1) {
value = lineNumber + 1;
} else {
value = -1; // here it needs to go back and check whether it is at the start
}
} else if (line[0] = 2) {
if (hasRunLine[line[1]] != 1) {
value = line[1];
} else {
value = -1; // here too
}
} else {
if (hasRunLine[line[1]] != 1) {
value = line[1];
} else if (hasRunLine[line[2]] != 1) {
value = line[2];
} else {
value = -1; // here too
}
}
if (value <= maximum && value >= 2) {
return value;
} else {
return -1; // here too
}
}
使用 vector
并在每次切换到不同位置时添加新动作。