Основное программирование Python: Python на основе реализация рекурсивного алгоритма выдает Maze

В данной статье приведены примеры задач, реализованных Maze Python рекурсивный алгоритм. Поделитесь с вами для вашей справки, следующим образом:

Что такое рекурсия?

Просто, чтобы понять это функция, которая называет себя процесс называется рекурсией.

Когда использовать рекурсию?

Если проблема может быть выражена как итерации меньшего масштаба, вы можете использовать рекурсивный алгоритм.
Лабиринт: двумерный массив , состоящий из 0 или 1, 1 предполагается , чтобы перейти к точке, то 0 не может двигаться к точке, как действовать с точки промежуточного значения массива 1, только вверх и вниз друг четыре направления перемещения блока, при перемещении к краю двумерного массива, может быть получено решение задачи, аналогичные проблемы могут быть отнесены к лабиринту.

Вы можете использовать вложенный список представляет собой двумерный массив в Python. [3] [3] Если предположить, лабиринты, начиная 6 * 6, вопрос из координат массива, не может судить об успехе лабиринта.

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)

Рекурсия это хорошая вещь ах!
Содержание более чем , сколько, и , наконец , рекомендовать хорошую репутацию в ряде государственных учреждений [Программисты], есть много старожилов обучения навыки, знания и практический опыт, навыки интервью, опыт на рабочем месте и другую долю, тем больше мы тщательно подготовили нуля вводная информация о фактических данных проекта каждый день , чтобы объяснить временные технологии Python программистов, чтобы поделиться некоторыми из способов узнать и нужно обратить внимание на мелкие детали, чтобы помнить внимание я
Here Вставка рисунка Описание

Выпущенные шесть оригинальных статей · вона похвала 0 · Просмотров : 4

рекомендация

отblog.csdn.net/chengxun02/article/details/104976841
рекомендация