题目描述
一个序列有N个数:A[1],A[2],…,A[N],求出最长非降子序列的长度
思路分析
这是博客http://hawstein.com/posts/dp-novice-to-advanced.html 上的第二个例子
编写代码
递归的代码看起啦更加好理解一些,不过用循环的方法代码更加简洁
使用递归的方法
show you code:
#include <iostream>
using namespace std;
int dp[6];
int max(int a,int b)
{
return (a>b)? a:b;
}
int dp_fun(int *A,int i,int num)
{
if(i == 0)
{
dp[i] = 1;
return max(dp[i],dp_fun(A,i+1,num));
}
else
{
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(i == num) return dp[i];
else return max(dp[i],dp_fun(A,i+1,num));
}
}
int main(){
int A[] = {
5, 3, 4, 8, 6, 7
};
cout<<