Python :: Aufgabe #77 :: Lösung #2
3 Lösungen

#77
Das Damenproblem (Teil II)
Fortgeschrittener - Python
von ElPapito
- 07.05.2015 um 11:45 Uhr
Das verallgemeinerte Damenproblem besteht aus einem nxn Schachfeld und n Damen.
Die Aufgabe besteht darin die n Damen so zu positionieren, dass sie sich gegenseitig nicht bedrohen, d.h. es dürfen keine zwei Damen in der gleichen Zeile/Spalte/Diagonale stehen.
Schreibe ein kleines Programm, welches für n = 1, ..., 13 ausgibt wie viele Lösungen existieren.
Die Aufgabe besteht darin die n Damen so zu positionieren, dass sie sich gegenseitig nicht bedrohen, d.h. es dürfen keine zwei Damen in der gleichen Zeile/Spalte/Diagonale stehen.
Schreibe ein kleines Programm, welches für n = 1, ..., 13 ausgibt wie viele Lösungen existieren.
#2

von eulerscheZhl (5230 Punkte)
- 01.01.2016 um 09:16 Uhr

import sys def placeQueenInLine(pos, line): if line == len(pos): return 1 result = 0; for i in range(len(pos)): blocked = False; for j in range(line): if pos[j] == i or pos [j] - (line-j) == i or pos [j] + (line-j) == i: blocked = True break pos [line] = i if not blocked: result += placeQueenInLine (pos, line + 1); return result; def placeQueens(n): pos = [0] * n result = 0; for i in range(n//2): #Ausnutzen der Symmetrie pos [0] = i result += 2 * placeQueenInLine (pos, 1) if n % 2 == 1: pos [0] = n // 2; result += placeQueenInLine (pos, 1) return result for i in range(14): print "n = " + str(i) + ": " + str(placeQueens(i)) + " Möglichkeiten"
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1