
このジャンルでお願いします。
下の図で☆がスタートラインで■が移動できるエリアだとします。
15マス移動できるとして、ここでは例えば時計回りに移動するとします。
ただ単に進むだけなら、一歩移動するごとに15(その時の移動可能歩数)から
1ずつ引いていって0になったら動けないようにすれば良いのですが、
移動途中で、進んできた道を戻る場合に移動可能歩数を
回復してやらなければなりません。
どうやってこの道が通ってきた道かを判断すれば良いのでしょうか?
(x=1,y=1)
↓
□□□■□□□
□□□■□□□
□□■☆■■■
□□■□■□■
□□■■■■■
□□■□■□□
□□■■■□□
No.2ベストアンサー
- 回答日時:
スタックを使うのはどうでしょうか?
* 空のスタックを用意します
* 移動する際にスタックに積まれた中の最新の座標と移動先の座標を比較し同じならばスタックから取り除き、ちがければ移動元の座標をスタックに積みます。スタックが空の場合は移動元の座標をスタックに積みます。
* 2の操作を繰り返します。
スタックの大きさが移動した歩数になります。
No.1
- 回答日時:
たとえばスタートの x=4,y=3 から、
x=4,y=3
x=3,y=3
x=3,y=4
x=3,y=5
x=4,y=5
x=5,y=5
x=5,y=4
x=5,y=3
と移動したときに、次の移動先である
x=4,y=3
を通ってきた道とカウントしないで良いとするなら(どちらを考えているかわかりませんのでとりあえず)、
単純に、移動を行ったら移動前の位置をバッファに保存していき、これから移動する位置とバッファの最後とを比較して、バッファ内にあれば回復とかすればいいだけのような気がします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Replace関数について教えて...
-
CSSが全く分かりません、お助け...
-
CPUが16bitでも32bitOSでコンパ...
-
最初に聞かれたこと
-
c言語の問題の説明、各所ごとに
-
Cのオブジェクトファイルの逆ア...
-
C言語 関数、変数の宣言について
-
C言語について。
-
C言語でファクト関数を使わずに...
-
プログラミング 素数か素数では...
-
あってる
-
DNCL(共テ用プログラミング言語...
-
int16_t の _t は何?
-
DLLファイルの逆コンパイラにつ...
-
visual studio 2022でのC#プロ...
-
プログラミングc++を全く分か...
-
DNCL(共テ用プログラミング言語...
-
C言語 配列と関数の練習問題
-
gccを行ってもexeファイルが生...
-
C言語 列挙型(enum型)変数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.netでDLLを読み込んで実行す...
-
printf / sprintf のスタック消...
-
最大スタックサイズを大きくす...
-
ゆゆにゃ。
-
Ethernetヘッダの取得 NDIS
-
gccでスタックサイズを変更する...
-
Visual C++ 2008 オーバーフロ...
-
H8マイコン スタック領域に...
-
ポーランド記法(前置記法)のア...
-
Cプログラミングの関数電卓のア...
-
WINAPについて
-
pthreadのスタックサイズ設定取...
-
_CRTIMPの意味は?
-
逆ポーランド記法
-
エラー?メッセージ
-
再帰処理を非再帰処理に書き換...
-
スタック領域変更
-
スタックのpush/pop動作について
-
VC++でプログラムから現在のス...
-
CASLIIについて
おすすめ情報