NxM平面が与えられた場合、右、下、斜めの3つの点(右下、315°)で2点間の可能なすべてのパスを見つけます。 C++での行列の2点間のすべての可能なパス
私はこの問題を抱えています。私はそれを2つの方法で解決しなければならない:再帰的かつ反復的。反復的に私はアイデアを持っていますが、実装方法はわかりません。
私のアイデアの説明は:
(Google翻訳)です。私たちはN列の幅とM列の高さのボードに直面しています。点(x1、y1)から別の点(x2、y2)に到達しなければならないので、(xi、yj)はNまたはMより大きくすることはできません。移動の制限は、右側(1)、斜め下側(2)、下側(3)にしか移動できないということです。これらの動きを考えると、私たちは左または上に行くことができないので、x1はx2より小さくなければならず、y1はy2より大きくなければなりません。 アルゴリズムは最初のポイント(x1、y1)から開始し、各移動に1つの3つの「子」を作成します。 右(x1 + 1) 対角線(x1 + 1、y1-1) 下-1) 各子供が受け入れる条件は、x1 < = N、y1 < = M、x1 < = x2、y1> = y2であるとする。
反復は、受け入れられた各子からさらに3人の子供(1回につき1つ)を作成しようとするものです。
この繰り返しは、各子の(x1、y1)が(x2、y2)に等しいと結論づけられます。
ありがとうございます。
あなたは深さ - 最初と幅 - 最初の違いに精通していますか? – Beta
パスを計算したり列挙したり(すべてのパスのリストを作成する必要があります) – MBo
ようこそStackOverflowへ。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [on topic](http://stackoverflow.com/help/on-topic)および[How to Ask](http://stackoverflow.com/help/how-to-ask)をここで適用してください。 "私は立ち往生しています"と "それを実装する方法がわかりません"は、スタックオーバーフローではなく、ローカルのチューターとのセッションが必要であることを示唆しています。 – Prune