トップ 九州大学 2000年 理系 第5問

九州大学 2000年 理系 第5問 解説

数学A/場合の数テーマ/最大・最小テーマ/場合分け
九州大学 2000年 理系 第5問 解説

方針・初手

解法1

(1)

$n=10, m=6$ のとき、操作(a)により $j$ は $10-6+1=5$ から始まり、$j=10$ まで1ずつ増加しながら(b)〜(e)を繰り返す。 与えられた $t$ の列に従って、順列 $S$ の変化を追う。開始時、$S$ は空である。

よって、得られる順列 $S$ は 526384 である。

(2)

アルゴリズムの(c)の操作により、各ステップで順列 $S$ の要素が1つ増える。増える要素の規則は以下のいずれかである。

(i) $t$ が $S$ に入っている場合:$t$ の直後に $j$ が追加される。(このとき、$j$ は必ず $S$ の2番目以降に配置される) (ii) $t$ が $S$ に入っていない場合:先頭に $t$ が追加される。

したがって、直前の状態を逆算する際の判定条件は次のようになる。

最終状態 $S = (8, 2, 7, 5, 9, 3)$ から逆順に $j=10, 9, \dots, 5$ の操作をたどる。

これらを $j=5$ から順に並べると、$t$ の列は 3, 5, 7, 2, 5, 8 となる。

(3)

(2)で考察した逆算の論理を一般化し、算法として記述する。求める $t$ の列を記録するため、新たな列 $L$ を用意する。

算法 [以下(ア), (イ), (ウ), $\cdots$ の順に行う]

(ア) $j=n$ とし、$t$ の列を記録するための列 $L$ を空とする。 (イ) 順列 $S$ の2番目以降の位置に $j$ が存在するかどうかを判定する。 (ウ) $j$ が $S$ の2番目以降に存在するならば、$S$ における $j$ の直前の数を $t$ とし、$S$ から $j$ を削除する。 そうでないならば、$S$ の先頭の数を $t$ とし、$S$ の先頭の数を削除する。 (エ) 求めた $t$ を列 $L$ の先頭に追加する。 (オ) $j$ を1減らす。 (カ) $j \geqq n-m+1$ ならば、(イ)へもどる。$j < n-m+1$ ならば終了し、$L$ を結果として求める数の列とする。

解説

答え

(1) 526384

(2) 3, 5, 7, 2, 5, 8

(3) (ア) $j=n$ とし、$t$ の列を記録するための列 $L$ を空とする。 (イ) 順列 $S$ の2番目以降の位置に $j$ が存在するかどうかを判定する。 (ウ) $j$ が $S$ の2番目以降に存在するならば、$S$ における $j$ の直前の数を $t$ とし、$S$ から $j$ を削除する。そうでないならば、$S$ の先頭の数を $t$ とし、$S$ の先頭の数を削除する。 (エ) 求めた $t$ を列 $L$ の先頭に追加する。 (オ) $j$ を1減らす。 (カ) $j \geqq n-m+1$ ならば、(イ)へもどる。$j < n-m+1$ ならば終了し、$L$ を結果とする。

自分の記録

ログインすると保存できます。

誤りを報告

解説の誤り、誤字、表示崩れに気づいた場合は送信してください。ログイン不要です。