Ok, endlich habe ich nach stundenlangem Kampf mit meinem Kopf endlich verstanden, wie Backtracking funktioniert. Obwohl ich immer noch denke, dass es noch Geheimnisse gibt, die es zu verstehen gibt. Wie auch immer, ich versuche das 4-Königinnen Problem auf dem Checkboard zu erstellen. Praktisch gebe ich mir ein leeres Checkboard (es ist tatsächlich 4x4) und ich muss 4 Orte finden, an denen diese Königinnen sich nicht selbst angreifen. Eine Königin greift die Reihe, Spalte und Diagonale an, zu der sie gehört. hier ist, was ich bisher getan habe (Die gültige Funktion ist noch nicht vollständig, aber es ist nicht wirklich wichtig. Ich brauche nur die Backtrack-Funktion zu arbeiten).Python Backtracking (Königinnen-Checkboard)
def findNextCell(grid,i,j):
for index in range(i,4):
for jindex in range(j,4):
return index, jindex
for index in range(0,4):
for jindex in range(0,4):
if grid[index][jindex] == 0:
return index, jindex
return -1,-1
def isValid(grid, index, jindex, queen):
rowOk = all([queen != grid[index][x] for x in range(4)])
if rowOk:
columnOk = all([queen != grid[x][jindex] for x in range(4)])
if columnOk:
return True
return False
def queenSolve(grid, i=0, j=0, num_queens = 0):
i, j = findNextCell(grid, i, j)
print grid
if num_queens == 4:
return True
if isValid(grid, i, j, 1):
grid[i][j]=1
num_queens += 1
if (queenSolve(grid, i, j, num_queens)):
return True
grid[i][j]=0
return False
input = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
print queenSolve(input)
Ich weiß nicht, was Sie mit Backtracking meinen. Ich sehe hier nichts, das ist ein Verweis auf Backtracking. –
Was ist Ihre Frage? Siehe http://stackoverflow.com/help/how-to-ask – Kara