n-queen バックトラッカーについて勉強中です。other_row_pos
誰かが対角線をチェックする方法を説明できますか? なぜそれが機能するのか、どのように機能するのかわかりません。
ウィキブックから取得 - 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;
}