最长严格递增子序列的长度

/***********************************************************
*版权所有:(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;
}

Guess you like

Origin blog.csdn.net/m0_46672781/article/details/119356641