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

3 Lösungen Lösungen öffentlich
#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.
#2
vote_ok
von eulerscheZhl (5230 Punkte) - 01.01.2016 um 09:16 Uhr
Quellcode ausblenden Python-Code
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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2098727

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.