lis(最长上升子序列) dp
求序列的lis,子序列可不连续
for(int i=1;i<=N;i++){ scanf("%d",&a[i]); dp[i]=1; } for(int i=2;i<=N;i++){ for(int j=1;j<i;j++){ if(a[j]<a[i]) dp[i]=max(dp[i],dp[j]+1); } } int ans=1; for(int i=1;i<=N;i++){ //注意并不是dp[N]最大,而是要找出dp[i]的最大值才是答案,不理解就打表 if(dp[i]>ans) ans=dp[i]; } printf("%d\n",ans);
时间: 2024-12-15 01:45:21