纯C
动态规划是真的🐂🍺
最长上升子序列的解法
详细说明:leetcode:最长上升子序列的官方解法
时间复杂度:O(n^2)
空间复杂度:O(n)
#include <stdlib.h>
#include <stdio.h>
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
int arr[300] = {0}, dp[300] = {0};
for(int i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
dp[0] = 1;
int maxans = 1;
for(int i=1; i<n; i++)
{
int maxval = 0;
for(int j=0; j<i; j++)
{
if(arr[i] > arr[j])
maxval = (maxval > dp[j]) ? maxval : dp[j];
}
dp[i] = maxval + 1;
maxans = (maxans > dp[i]) ? maxans : dp[i];
}
printf("%d\n", maxans);
}
return 0;
}
京公网安备 11010502036488号