• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:matlabで全経路探索し、得られた全経路を一つのセル配列に入れる方法)

matlabで全経路探索し、得られた全経路を一つのセル配列に入れる方法

このQ&Aのポイント
  • matlabで全経路探索し、得られた全経路を一つのセル配列に入れる方法を探しています。
  • 参考サイト様の「バックトラックで経路探索を行う」をほとんどそのままmatlabで書いて、同じような結果(ディスプレイに全経路が表示される)を得ることはできました。
  • どのような方法、考え方でもいいので御意見、アドバイス等いただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1です。 > プログラムの流れから考えると、再帰関数をつかっているので、初めに見つかった経路を入れたセル配列と後から見つかった経路を入れたセル配列は名前は同じでも別の配列として解釈されるため、その辺に原因があるのかなと考えています。 再帰関数の場合、受け渡しに必要なパラメーターを入力引数、出力引数両方に指定する必要があります。 同じことは global変数を使ってもできるのですが、個人的にはお勧めしません。global変数を使うことの弊害はソフト屋さんには有名な話です。 ゴールした回数を数えるカウンタを入出力引数の両方に指定すれば楽かもしれません。

gf13017nj2
質問者

お礼

返事が遅れて申し訳ありません。度々御意見をいただき恐縮です。入力引数、出力引数を指定したところ、当初目的としていた結果を得ることができました。一般的に見れば簡単なことかもしれませんが、自分一人ではこんなに早く解決できる問題ではなかったと思います。御助言ありがとうございました。

その他の回答 (1)

回答No.1

単純に経路のゴールに行ったときに、 画面出力するんじゃなくて、cellやstructにコピーすれば? その時ついでに、条件も書き込めばいいのでは例えば距離とかかな? で後でまとめて出力すれば良いのでは? cellやstructは長さの違う文字も配列のように使えますよ。

gf13017nj2
質問者

お礼

迅速な回答ありがとうございます。「ゴールしたらセル配列に入れる」という方法は試してみたのですが、セル配列がどんどん膨張した(セル配列の中にさらにセル配列が入る)り、結果がしっかり格納されなかったりで、うまくいきませんでした。 プログラムの流れから考えると、再帰関数をつかっているので、初めに見つかった経路を入れたセル配列と後から見つかった経路を入れたセル配列は名前は同じでも別の配列として解釈されるため、その辺に原因があるのかなと考えています。わかりにくい文ですみません。。。。 と、ここまで書いていてグローバル変数のことを思い出したので、まだ試していないstruct共々試してみようと思います。御意見ありがとうございました。

関連するQ&A