7 1 7 3 5 9 4 8 求最长上升子序列的个数 #include<iostream> using namespace std; int dp[10001]; int a[10001]; int main() { int max; int i,j; int n; while(scanf("%d",&n)!=EOF) { max=0; for(i=1;i<=n;i++) { dp[i]=1; scanf("%d",&a[i]); } for(i=1;i<=n;i++) { int min=0; for(j=1;j<i;j++) if(a[i]>a[j]&&dp[j]>min) min=dp[j]; dp[i]+=min; if(dp[i]>max) max=dp[i]; } cout<<max<<endl; } return 0; }
原文地址:http://www.cnblogs.com/zhangdashuai/p/3845031.html