程式設計之美 求陣列中的最長遞增子串行

2021-09-09 04:10:34 字數 447 閱讀 5793

如題,例如:存在陣列 1,-1,2,-3,4,-5,6,-7 ,則最長的遞增子串行是:1,2,4,6.

法一:蠻力法

int lis(int* arr,int n)

}if(icount>tmp_count)

icount=0;

}return tmp_count+1;

}

複雜度為o(n^2);

法二:利用dp來做,最有問題,一般都用dp來做,關鍵是找到遞迴公式。

用lis[i]記錄位置i處,最長的遞增子串行,程式設計之美上的解法,真心看不懂,記錄下來,以後再看:

int lis(int array)}}

return max(lis);

}

法三:先對陣列排序,然後找出原陣列和排序後陣列的lcs,就是我們要找的最長遞增子串行。

程式設計之美 2 16 求陣列中最長遞增子串行

1.簡述 寫乙個時間複雜度盡可能低的程式,求乙個一維陣列中最長遞增子串行的長度。例如在序列1,1,2,3,4,5,6,7中,其最長的遞增子串行的長度為4 如1,2,4,6 2.思路 這個題目與前面求一維陣列中子陣列之和最大值有點像,不過區別還是很明顯,比如 子陣列是陣列中一串連續相鄰的數字,而子串行...

最長遞增子串行 程式設計之美2 16

問題 給定乙個序列an a1,a2,an 找出最長的子串行使得對所有i j,ai 1.用動態規劃實現 求最長的子串行長度 int longestincreasesubserial int array,int length 初始化各個子串行的最大長度 int currentmax new int le...

求陣列的最長遞增子串行

採用動態規劃找出陣列的最長的遞增子串行 public class longestsub int len arr.length int dp new int len arrays.fill dp 1 採用1填充陣列 這時dp 0 1 了 for int i 1 i len i int length d...