나는 기사의 투어 문제와 백 트랙킹 알고리즘을 사용하고있다. 내 코드는 결국 오른쪽 출력을 생성하지 않습니다. n^2 -1에 도달하지 않을 때까지 마지막 두 항목을 계속 반복합니다.나이트 투어 되돌아 가기
이것은 내 코드입니다. 나는이 의사 코드를 따르고있다 http://www.wou.edu/~broegb/Cs345/KnightTour.pdf
visited = [[False for x in range(5)] for y in range(5)]
def move(x,y,m):
result=False
if x<0 or x>=5 or y<0 or y>=5:
return False
if visited[x][y]==True:
return False
if m==24:
print "a solution has been found"
print x,",",y
visited[x][y]=True
return True
else:
result=result or move(x+2,y+1,m+1)
result=result or move(x+2,y-1,m+1)
result=result or move(x-2,y+1,m+1)
result=result or move(x-2,y-1,m+1)
result=result or move(x+1,y+1,m+1)
result=result or move(x+1,y-1,m+1)
result=result or move(x-1,y+1,m+1)
result=result or move(x-1,y-1,m+1)
if result==True:
print x,",",y
return True
else:
visited[x][y]=False
return False
를 반복 역순으로 인쇄되어 당신에게 빈센트, Blckknght 감사합니다 , MrHug 정말 도움이, 당신의 소중한 시간을 주셔서 감사합니다, 코드가 잘 작동합니다 그리고 난 오류가있어 –
나는이 올바르게 되돌릴 생각하지 않습니다. 이동이 유효하지만 솔루션으로 이어지지 않으면'visited [x] [y]'를 지우지 않습니다. 나는 당신이 마지막으로'return' 명령문 앞에'visited [x] [y] = False'를 추가해야 작동한다고 생각합니다. – Blckknght