【发布时间】:2014-08-29 06:47:42
【问题描述】:
我正在尝试编写一个程序来解决八皇后问题,但是它一直到达最后一个返回,而它不应该,并尝试将它放在一个 else 上,但它从未到达它,即使我最初也是如此给它一个空堆栈。 同样无论出于何种原因,我第一次调用 top() 函数时,它返回的元素与我上次添加的元素不同,但如果我再次调用它,它会返回正确的元素。 所以我想知道问题出在哪里?
bool search(stack<nodo>& board, int n) {
nodo queen;
queen=board.top();
queen=board.top();
if (queen.y == n)
return true;
bool valid;
if (!board.empty()) {
queen.y += 1;
for(int i; i<=n; i++) {
queen.x = i;
valid = isvalid(queen,board);
if (valid) {
board.push(queen);
search(board,n);
}
}
board.pop();
}
return false;
}
【问题讨论】:
-
您的意思可能是
return search(board, n);而不是search(board, n);?
标签: c++ stack backtracking