最長上升子序列

題目

給定一個序列A及它的長度n(長度小於等於500),請返回LIS的長度

分析

這是一個經典的LIS(即最長上升子序列)問題,可以利用動態規劃的思想解決

private static int getLIS(int[] A, int n) {
    // write code here
    int[] dp = new int[n];
    int max = 0;
    for (int i = 0; i < n; i++) {
        dp[i] = 1;
        for (int j = 0; j < i; j++) {
            if (A[j] < A[i] && dp[j] + 1 > dp[i]) {
                dp[i] = dp[j] + 1;
            }
        }
        if (max < dp[i]) {
            max = dp[i];
        }
    }
    return max;
}





發佈了39 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章