我正在學習n皇后回溯。有人可以向我解釋other_row_pos
如何檢查對角線嗎?我不確定它爲什麼有效,或者它是如何工作的。從維基採取你如何測試n皇后對角線?
- http://en.wikibooks.org/wiki/Algorithm_Implementation/Miscellaneous/N-Queens:
bool isSafe(int queen_number, int row_position) {
// Check each queen before this one
for(int i=0; i<queen_number; i++) {
// Get another queen's row_position
int other_row_pos = position[i];
// Now check if they're in the same row or diagonals
if(other_row_pos == row_position || // Same row
other_row_pos == row_position - (queen_number-i) || // Same diagonal
other_row_pos == row_position + (queen_number-i)) // Same diagonal
return false;
}
return true;
}
對角線是斜線±1 ... –
它檢查新的女王是否可以插入一個位置而不攻擊其他女王 –
在提供的鏈接中,我注意到沒有辦法做UNDO的轉讓位置[I]?此代碼中的回溯器在哪裏? – runners3431