2

再帰について学んでいます。例として、配列を与えるアルゴリズム 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);
    }
}

示された結果を得るために、私の例でその関数を呼び出すにはどうすればよいですか?

4

2 に答える 2