私は最近のインタビューでthis questionを頼まれた。多項式時間で解く方法迷路パズルのラット?
A迷路は、ソースブロックが 上部左端のブロック、すなわち、迷路[0] [0]と先であるブロックのN * Nのバイナリ行列として与えられます。ブロックは 右下のブロック、すなわち迷路[N-1] [N-1]である。ラットはソース から出発し、目的地に到着しなければならない。ラットは、 の順方向と下方向の2つの方向にのみ移動できます。 (先進問題では4)。迷路行列では、0 はブロックがデッドエンドであることを意味し、1はブロックがソースからデスティネーションへのパスで使用できることを意味します。
私の答えはバックトラックを使用しているリンクに記載されたものでした。リンクから高レベルの擬似コード:
If destination is reached
print the solution matrix
Else
a) Mark current cell in solution matrix as 1.
b) Move forward in horizontal direction and recursively check if this
move leads to a solution.
c) If the move chosen in the above step doesn't lead to a solution
then move down and check if this move leads to a solution.
d) If none of the above solutions work then unmark this cell as 0
(BACKTRACK) and return false.
インタビュアーは私の応答によってかなり驚いた、と明らかに多項式時間ソリューションを期待していました。
この問題の多項式時間解が存在しますか?
ここにあなたの記事のすべての必要な詳細を含めると、外部サイトに頼ることを避けるために時間がかかる。 [How to Ask](http://stackoverflow.com/help/how-to-ask)ページを参照してください。 – ray
@amit私の質問を編集し、答えを出すためにタイムアウトを取ってくれてありがとう。@ ray私はあなたのアドバイスと、将来の投稿のガイドラインを尋ねるために間違いなく注意を払うだろう。 –