[問題]最長共通部分
907 名前:以下、名無しにかわりましてVIPがお送りします [sage]: 2008/08/11(月) 16:05:00.79 ID:hbeCeZUF0 (17)
問題投下したくなったから投下してみる。暇な人は解いてみてね。
・512以下の要素数を持つint配列a, bが与えられる。
a, bは0で終端されている。
a, bとの最長共通部分列を検出し出力せよ。
だたし最長共通部分列は複数存在する場合があるので
i文字目がj通り考えられるならその置き換え可能なj個の文字列も
置き換え文字であるとして出力せよ(認識可能であれば出力方法は問わない)。
(例) a = { 1, 2, 3, 0 }; b = { 2, 3, 4, 0 }; 出力 = { (2), (3) };
(例) a = { 1, 2, 3, 0 }; b = { 1, 3, 2, 0 }; 出力 = { (1), (2, 3), (3, 2) };
・512以下の要素数を持つint配列a, bが与えられる。
a, bは0で終端されている。
bのaに含まれる長さ2以上の部分列全てを出力せよ
(認識可能であれば出力方法、順位は問わない)。
(例)
a = { 1, 2, 3, 4, 100, 200, 5, 6, 0 };
b = { 1, 100, 200, 2, 3, 4, 5, 6, 0 };
出力 = { (2, 3, 4), (100, 200), (5, 6) };
最長共通部分とは、一番長い共通する部分ってことです
たとえばabcdefg と xbcdexx だったら 1..4の[bcde]ですね!