// 求最长递增子序列.cpp : 定义控制台应用程序的入口点。
//动态规划思想
#include "stdafx.h"
#include<iostream>
#include <algorithm>
using namespace std;
int dynamicProgram(int *arry,int n)
{
//list[i]存储着以arry[i]为最后一个元素的序列(该序列是递增子序列)的长度
int *list = new int[n];
int i=0;
for(; i<n; i++)
{
list[i]=1;
}
for(i=1; i<n; i++)
{
for(int j=0; j<i; j++)
{
//状态转移方程
if(arry[i]>arry[j] && list[i]<list[j]+1)
list[i]=list[j]+1;
}
}
int max = list[0];
for(int k=1; k<n; k++)
{
if(list[k]>max)
max = list[k];
}
delete []list;
return max;
}
int main()
{
int a[8]={1,-2,5,-3,-1,4,6,0};
int maxLength = dynamicProgram(a,8);
cout<<"最长递增子序列的长度是"<<maxLength<<endl;
return 0;
}
求数组的最长递增子序列
最新推荐文章于 2023-07-26 15:27:37 发布