再帰について学んでいます。例として、配列を与えるアルゴリズム LIS (最長増加部分列) を取り上げました。
1,2,8,3,6,4,9,5,7,10
次のようになる最長増加サブシーケンスを見つけます。
1,2,3,4,5,7,10
操作のアイデアから始めるために、私はグーグルで検索していましたが、その機能を見つけました:
public static void printLis (int [] lis, int lisIndex, int [] arr, int max) {
if (max == 0) {
return;
}
if (lis [lisIndex] == max) {
printLis (lis, lisIndex-1, arr, max-1);
System.out.print (arr [lisIndex] + "");
} else {
printLis (lis, lisIndex-1, arr, max);
}
}
示された結果を得るために、私の例でその関数を呼び出すにはどうすればよいですか?