Pitón de programación básica: implementación del algoritmo recursivo basado en Python emite Maze

Este documento describe ejemplos de problemas Maze Python algoritmo recursivo implementado. Compartir con usted para su referencia, de la siguiente manera:

¿Cuál es la recursividad?

Sencillo de entender es la función que se llama el proceso se llama recursividad.

Cuándo utilizar la recursividad?

Si un problema se puede expresar como iteración menor escala, se puede utilizar un algoritmo recursivo.
Maze: una matriz bidimensional que consiste en 0 o 1, 1 se supone que moverse al punto, es 0 no se puede mover hasta el punto, la forma de proceder desde un punto intermedio entre el valor de la matriz es 1, sólo hacia arriba y hacia abajo cada cuatro direcciones de movimiento de una unidad, cuando se mueve hasta el borde de una matriz de dos dimensiones, la solución del problema se puede obtener, problemas similares pueden ser referidos como un laberinto.

Se puede utilizar una lista anidada representa una matriz de dos dimensiones en Python. [3] [3] Suponiendo laberinto iniciar un 6 * 6, la cuestión de las coordenadas de la matriz, no puede juzgar el éxito del laberinto.

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]]

Para este laberinto, podemos usar la idea de la solución recursiva buena. Para una matriz de puntos, cuatro direcciones del punto se pueden representar fácilmente, siempre que sea un punto de tiempo para mover todo el tema móvil se ha convertido en un problema, ya que el estado inicial y sumando o restando las coordenadas horizontal y vertical, la búsqueda continúa cuatro direcciones se pueden mover para encontrar un punto, se mueven hacia el borde de la matriz conocido.

Así que podemos codificar:

# 判断坐标的有效性,如果超出数组边界或是不满足值为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)

La recursividad es una buena cosa, ¡ah!
El contenido de más de cuántos, y finalmente a recomendar una buena reputación en el número de instituciones públicas [programadores], hay una gran cantidad de veteranos habilidades de aprendizaje, experiencia, habilidades de la entrevista, la experiencia laboral y otra cuota de aprendizaje, cuanto más cuidadosamente preparado el basado en cero información introductoria sobre los datos reales del proyecto todos los días para explicar el calendario de la tecnología de los programadores de Python, para compartir algunas de las formas de aprender y necesidad de prestar atención a los pequeños detalles, para recordar la atención que
Aquí Insertar imagen Descripción

Publicado seis artículos originales · ganado elogios 0 · Vistas 4

Supongo que te gusta

Origin blog.csdn.net/chengxun02/article/details/104976841
Recomendado
Clasificación