それぞれ取れる部分列の集合を先頭から更新していく。それぞれの集合をL1,L2,L3とする。集合には、重複を許さないデータ構造を使う。対して、以下をすればよい。133,233,113,213,313,223,323}最終的に、L3の長さが答え。L2からL3へ移すところが計算量的にボトルネックとなる。それぞれについて可能か調べる。解説pdf1個目の解法。可能か調べたければ、以下のようにする。各過程で、目標の数字が存在しなければ'312'は不可能。先頭から最初に出現する'3'の位置を得るそれ以降で次に最もはやく出現する'1'の位置を得るそれ以降に'2'が存在したら、OKこれを高速に実装するには、各数字につき、何番目に出現するかのindexリストをまず作成しておく。