0
我试图做一个程序来解决八皇后问题,但它保持到最后的回报,当它不应该,并试图把它放在一个别的,但它从来没有达到它,即使我最初给它是一个空的堆栈。 同样出于任何原因,我第一次调用top()函数时,它会返回与上次添加的元素不同的元素,但如果我再次调用它,则会返回正确的元素。 所以我想知道问题在哪里?为什么在堆栈仍有元素时跳过“if stack not empty”条件?
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;
}
你也许是指'返回搜索(board,n);'而不是仅仅搜索(board,n);'? – Angew 2014-08-29 07:20:50