#include <iostream>
using namespace std;
//动态规划解法
int getmaxchildlen(int *arr,int len)
{
int ret = 0;
//新建一个数组 用来存放在对应的i位置为结尾时子串的长度
int *LenP = new int[10];
int i= 0,j = 0;
for(i = 0;i < len;i++)
{
//初始时第i位置为自己本身
LenP[i] = 1;
for(j = 0;j < i;j++)
{
//从i向前遍历 当第i位置大于前面 并且小于前面位置的最大子序+1则该I位置为其
if((arr[i] > arr[j])&&(LenP[i] <LenP[j]+1))
{
LenP[i] = LenP[j]+1;
if(LenP[i] > ret)
ret = LenP[i];
}
}
}
for(i = 0;i < len;i++)
{
cout<<LenP[i]<<" ";
}
delete[] LenP;
LenP = NULL;
return ret;
}
int main()
{
int len = 0,i = 0;
int arr[10] = {1,-1,3,5,2,9,7,8,4,-4};
len = sizeof(arr)/sizeof(arr[0]);
i = getmaxchildlen(arr,len);
cout<<i<<endl;
return 0;
}
最大递增子序列
最新推荐文章于 2023-06-29 00:49:57 发布