中島くんコントロール(★★)

2 secs 1024 MB
aiblecode's icon aiblecode

解説

手始めに、スタート地点のマス (si,sj)(s_i, s_j) とゴール地点のマス (gi,gj)(g_i, g_j) を見つけましょう。
グリッドを表す 22 次元配列 CC について、Ci,j=C_{i, j} = SCi,j=C_{i, j} = G となる添え字 (i,j)(i, j) を繰り返し処理で見つければ良いです。

次に、上下方向と左右方向のそれぞれについて処理します。

上下方向

  • si<gis_i < g_i のとき、下方向に移動します。 vgisig_i - s_i 個出力すれば良いです。
  • si>gis_i > g_i のとき、上方向に移動します。 ^sigis_i - g_i 個出力すれば良いです。
  • si=gis_i = g_i のとき、上下方向に移動しません。

左右方向

  • sj<gjs_j < g_j のとき、右方向に移動します。>gjsjg_j - s_j 個出力すれば良いです。
  • sj>gjs_j > g_j のとき、左方向に移動します。<sjgjs_j - g_j 個出力すれば良いです。
  • sj=gjs_j = g_j のとき、左右方向に移動しません。

このように指示を表す文字列 XX を作成すれば良いです。

実装例(Python)
実装例(Java)
実装例(C++)