#include<stdio.h>
/*
求数组中最长递增子序列长度:
例如:a[10]={1,-1,2,-2,3,-3,4,-4,5,6},递增序列为1,2,3,4,5,6
基本思想:
对于子序列a[0-i],它的最长子序列长度为b[i],
对于子序列a[0-i+1],它的最长子序列有两种情况:
一种是前面的都比a[i+1]大,那么它的最长子序列就是a[i]的最长子序列
一种是前面有比a[i+1]小的数字,那么它的最长子序列就是a[0-i]中取比a[i+1]小的最长子序列加一,
不用关注具体的序列,如果a[i+1]>a[i],那么a[0-i+1]的最长子序列一定是b[0-i]中某个数加一。
*/
void main()
{
int i,j;
int a[10]={1,-1,2,-2,3,-3,4,-4,5,6};
int b[10];
b[0]=1;
for(i=0;i<10;i++){
b[i]=1;
for(j=0;j<i;j++){
if((a[i]>a[j])&&(b[i]<=b[j])){
b[i]=b[j]+1;
}
}
}
//下面把b[i]=1的全部替换成
/*
求数组中最长递增子序列长度:
例如:a[10]={1,-1,2,-2,3,-3,4,-4,5,6},递增序列为1,2,3,4,5,6
基本思想:
对于子序列a[0-i],它的最长子序列长度为b[i],
对于子序列a[0-i+1],它的最长子序列有两种情况:
一种是前面的都比a[i+1]大,那么它的最长子序列就是a[i]的最长子序列
一种是前面有比a[i+1]小的数字,那么它的最长子序列就是a[0-i]中取比a[i+1]小的最长子序列加一,
不用关注具体的序列,如果a[i+1]>a[i],那么a[0-i+1]的最长子序列一定是b[0-i]中某个数加一。
*/
void main()
{
int i,j;
int a[10]={1,-1,2,-2,3,-3,4,-4,5,6};
int b[10];
b[0]=1;
for(i=0;i<10;i++){
b[i]=1;
for(j=0;j<i;j++){
if((a[i]>a[j])&&(b[i]<=b[j])){
b[i]=b[j]+1;
}
}
}
//下面把b[i]=1的全部替换成