题解 | 最长上升子序列(一)
最长上升子序列(一)
https://www.nowcoder.com/practice/5f65ccbb025240bd8458eb6479c2612e
#include <stdio.h> int main() { int n; scanf("%d",&n); int arr[n]; for(int i=0;i<n;i++){ scanf("%d",&arr[i]); } int dp[n]; for(int i=0;i<n;i++){ dp[i]=1; } for(int i=1;i<n;i++){ for(int j=0;j<i;j++){ if(arr[j]<arr[i]){ if(dp[i]>dp[j]+1){ dp[i]=dp[i]; }else{ dp[i]=dp[j]+1; } } } } int max=dp[0]; for(int i=0;i<n;i++){ if(max>dp[i]){ max=max; }else{ max=dp[i]; } } printf("%d",max); return 0; }