/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 给定数组的最长严格上升子序列的长度。 * @param arr int整型一维数组 给定的数组 * @param arrLen int arr数组长度 * @return int整型 */ int max(int a,int b) { return a>b?a:b; } int LIS(int* arr, int arrLen ) { // write code here if(arrLen==0) return 0; int dp[1005]={0},m=0; for(int i=1;i<=arrLen;i++) { for(int j=1;j<i;j++)//取前面所有比它小的元素+1的最大值 { if(arr[j-1]<arr[i-1]) { dp[i]=max(dp[i],dp[j]+1); } } if(dp[i]==0) dp[i]=1;//代表前面没有更小的元素,将其元素设为一个子序列的开头 if(dp[i]>m) m=dp[i]; } return m; }