/***********************************************************
*版权所有:(C) 2021.8.3 烽火大队-狼烟一号(第八方面军)
*
*文件名称: 最长严格递增子序列的长度
*内容摘要: 给你一个数组nums,找到其中最长严格递增子序列长度
*当前版本: 1-1
*文件作者:帅子牛
*完成日期:2021.8.3
*备注 :动态规划法
*修改记录:暂无
***********************************************************/
#include <stdio.h>
#include <stdlib.h>
int fun(int nums[],int len){
if(len==0){
return 0;
} //如果长度为 0直接返回
int *dp = malloc(sizeof(int)*len);
int i=0,j=0,max=1;
dp[0] = 1;
for(i=1;i<len;i++){
dp[i] = 1;
for(j=0;j<i;j++){//每一轮进行对比判断
if(nums[j]<nums[i]){//动态规划的要点:符合条件保存过程值
dp[i] = dp[i]>(dp[j]+1)?dp[i]:(dp[j]+1);
}
}
max = max>dp[i]?max:dp[i];
}
return max;
}
int main() {
int nums[]={10,9,2,5,3,7,101,18};
int len = sizeof(nums)/sizeof(int);
printf("%d\n",len);
printf("%d",fun(nums,len));
return 0;
}