Ich studiere die N-Königin Backtracker. Kann mir jemand erklären wie other_row_pos
nach Diagonalen sucht? Ich bin mir nicht sicher, warum es funktioniert oder wie es funktioniert.Wie testen Sie für Diagonale in N-Queens?
von wikibooks genommen - 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;
}
Diagonalen sind Linien der Steigung ± 1 ... –
seine Überprüfung, ob die neue Königin in eine Position ohne angreifende andere Königin –
eingefügt werden kann In dem Link zur Verfügung gestellt, bemerkte ich, gibt es keine Möglichkeit, die UNDO der Zuweisung von zu tun Position [i]? Wo ist der Backtracker in diesem Code? – runners3431