Tôi đang nghiên cứu trình theo dõi n-nữ hoàng. Ai đó có thể giải thích cho tôi cách kiểm tra số diagonals other_row_pos
không? Tôi không chắc chắn tại sao nó hoạt động hoặc cách nó hoạt động.Làm thế nào để bạn kiểm tra đường chéo trong n-queens?
lấy từ Wikibooks - 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;
}
Đường chéo là đường dốc ± 1 ... –
kiểm tra xem liệu nữ hoàng mới có thể được chèn vào vị trí mà không tấn công nữ hoàng khác –
Trong liên kết được cung cấp, tôi nhận thấy không có cách nào để thực hiện UNDO trong việc gán vị trí [i]? Trường hợp là backtracker trong mã này? – runners3431