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