Python 재 귀 알고리즘 을 기반 으로 한 미로 문제
재 귀 란 무엇 입 니까?
간단하게 이해 하면 함수 가 자신 을 호출 하 는 과정 을 재 귀 라 고 한다.
재 귀 는 언제 사용 합 니까?
한 문제 가 더 작은 규모 의 교체 연산 이 라 고 표시 할 수 있다 면 재 귀 알고리즘 을 사용 할 수 있다.
미로 문제:0 또는 1 로 구 성 된 2 차원 배열 에서 1 은 이동 할 수 있 는 점 이 고 0 은 이동 할 수 없 는 점 이 라 고 가정 한다.어떻게 배열 의 중간 에 있 는 값 이 1 인 점 에서 출발 하여 각각 상하 좌우 네 방향 으로 한 단 위 를 이동 할 수 있 고 2 차원 배열 의 가장자리 로 이동 하면 문제 의 해 를 얻 을 수 있 으 며 비슷 한 문 제 는 미로 문제 라 고 할 수 있다.
python 에 서 는 list 내장 을 사용 하여 2 차원 배열 을 표시 할 수 있 습 니 다.6*6 의 미 로 를 가정 하면 문제 가 발생 할 때 이 배열 의 좌표[3][3]에서 출발 하여 성공 적 으로 미 로 를 벗 어 날 수 있 는 지 판단 한다.
maze=[[1,0,0,1,0,1],
[1,1,1,0,1,0],
[0,0,1,0,1,0],
[0,1,1,1,0,0],
[0,0,0,1,0,0],
[1,0,0,0,0,0]]
이 미로 문제 에 대하 여 우 리 는 재 귀적 인 사상 으로 잘 해결 할 수 있다.배열 의 한 점 에 대해 이 점 의 네 방향 은 가로 좌표 의 가감 을 통 해 쉽게 표시 할 수 있다.이동 할 수 있 는 이동 가능 한 점 이 있 을 때마다 전체 문 제 는 초기 상태 와 같은 문제 로 바 뀌 었 고 네 방향 을 계속 검색 하여 이동 할 수 있 는 점 을 찾 아 배열 의 가장자리 로 이동 하 는 것 을 알 수 있다.그래서 우 리 는 이렇게 인 코딩 할 수 있다.
# , 1 , False, True。
def valid(maze,x,y):
if (x>=0 and x<len(maze) and y>=0 and y<len(maze[0]) and maze[x][y]==1):
return True
else:
return False
#
def walk(maze,x,y):
# ,
if(x==0 and y==0):
print("successful!")
return True
#
if valid(maze,x,y):
# print(x,y)
maze[x][y]=2 # ,
# , ,
if not walk(maze,x-1,y):
maze[x][y]=1
elif not walk(maze,x,y-1):
maze[x][y]=1
elif not walk(maze,x+1,y):
maze[x][y]=1
elif not walk(maze,x,y+1):
maze[x][y]=1
else:
return False # ,
return True
walk(maze,3,3)
귀속 은 좋 은 물건 이 야!PS:본 사이트 에는 무한 미로 게임 이 하나 더 있 습 니 다.JS 를 바탕 으로 이 루어 집 니 다.참고 하 시기 바 랍 니 다.
온라인 미로 게임:
http://tools.jb51.net/games/migong
Python 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.