基本的なプログラミングのpython:Pythonベースの再帰アルゴリズムの実装に関する問題迷路

本論文では、迷路のPython再帰的なアルゴリズムが実装された問題の例を示します。以下のように、ご参考のためにあなたに共有します:

再帰とは何ですか?

理解することは、単純なプロセスは、再帰と呼ばれている自分自身を呼び出す関数です。

再帰を使用する場合は?

問題は、反復小さい規模として表現することができる場合は、再帰的なアルゴリズムを使用することができます。
迷路:0または1からなる二次元アレイは、1点に移動すると仮定され、それは0点に移動することはできませんであり、どのようにのみ上下それぞれ、中間の配列値が1である点から進行します二次元アレイの端部に移動するとき、問題の解決策を得ることができるユニットを、移動四方は、同様の問題が迷路と呼ぶことができます。

あなたは、ネストされたリストは、Pythonで2次元配列を表して使用することができます。[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]]

この迷路のために、我々は、再帰的な優れたソリューションのアイデアを使用することができます。ドットアレイのために、ポイントの4方向を容易に全体の問題は、初期状態として問題となっており、水平および垂直座標を加算又は減算することにより、検索が継続移動させるために、時間のたびに可動点を表すことができます。四方をポイントを見つけるために移動することができ、既知の配列の端部に移動します。

我々はコーディングできそう。

# 判断坐标的有效性,如果超出数组边界或是不满足值为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のプログラマの技術のタイミングを説明するために、私は注意を覚えています
ここに画像を挿入説明

リリース6元記事 ウォンの賞賛0 ビュー4

おすすめ

転載: blog.csdn.net/chengxun02/article/details/104976841