辞書式配列の問題
小手調べ 12345の5文字を並べ替えたもののうち、
25000より小さいものは何個あるか。

解答; 一万の位が1のとき、4!=24個
一万の位が2のとき、千の位は1,3,4のいずれか。
よって、3×(3!)=18個
以上より、42個があります。

辞書式配列の問題は、この問題のように、○○○○○以下の数字は何個あるか、
という問題に帰着させると解きやすくなります。

例題SUPERの5文字を並べ替えて単語を作る。
作った全ての単語を辞書式に並べていき、SPRUEのように、
意味を持たない単語も数えるものとする。
(1)SUPERは何番目にあるか。
(2)50番目の単語は何か。

もちろん、全部で5!=120通りですが、単語全てを並べるのは時間がかかりますね。
この問題を分かりやすくするポイントは、数字に置き換えることです。
(このアイデアは佐々木信吾さんより頂きました。ありがとうございます。)
とりあえず、1番目は何か考えましょう。EPRSUですね。
これを順に1,2,3,4,5とします。
文字と数字の対応表も作っておけば更に分かりやすくなります。

両方の問題ともに、○○で始まるものは何個あるかを数えるのがポイントです。

(1)について
この最初の単語を並べ替えながら表を作っていきます。
SUPERは45213であることに注意します。
「小手調べ」の問題にしたがって、45213以下の数字が何個あるかを調べればよくなります。 次のように表を作れば、さらに分かりやすくなると思います。
先頭の数字(文字)個数
1(E)4!=24個
2(P)24個
3(R)24個(小計24×3=72個)
41(SE)3!=6個
42,43(SP,SR)6個ずつ(小計6×3=18個)
451(SUE)2!=2個
これの次が45213(SUPER)ですから、全部で72+18+2+1=93文字目となります。

(2)について
(1)のように、頭文字が同じ単語はいくつずつあるかを考えれば良いと思います。
(1)との違いは、残りがいくつあるのか気にすることです。
同様に表を作ってみます。
先頭の数字(文字)個数残り個数
1(E)4!=2426
2(P)4!=48
3(R)から始まる単語の2つ目ということになります。
3から始まる数字は小さい順に、31245,31254ですから、
これを文字で置きなおせば、50番目はREPUSとなります。
慣れるために、もう1つ問題を出しますので、考えてみましょう。

解かずに修行に出る

問題 FRIENDの6文字を並べ替えて単語を作る。作った全ての単語を辞書式に並べていくとき、
 (1)FRIENDは何番目か。
 (2)200番目の単語は何か。

解説へ
解答

(1)まず、単語内で辞書式に並べると、最初の文字は、DEFINR。
よって、対応表は次の通り。
FRIENDを数字に対応させると364251。
1,2で始まるものはそれぞれ5!=120個ずつある。(小計240)
31,32,34,35で始まるものはそれぞれ4!=24個ずつある。(小計96)
361,362で始まるものは3!=6個ずつある。(小計12)
3641で始まるものは2!個ある。
次は364215,その次が364251(FRIEND)だから、
全部で240+96+12+2+2=352番目。
(2)1で始まる数字は5!=120個あるので、
200番目の単語は2から始まる数字の80番目。
(並べるのが大変なときは更に絞ります。)
21,23,24で始まる単語はそれぞれ4!=24個あるので、
80=24×3+8より、求める単語は25から始まる数字の8番目。
さらに251から始まる単語は3!=6個あるので、 求める文字は253から始まる単語の2番目。
253から始まる単語は順に、253146,253164だから、
200番目の単語は、ENFDRI。

修行に出る

目次へ