http://acmpj.zstu.edu.cn/JudgeOnline/showproblem?problem_id=2548
这不是什么高效算法,不过好理解,现在看看好二啊。。。
#include<stdio.h> int n,num[1001],dp[1001]; int main(void) { int i,j,ans; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { dp[i]=1; scanf("%d",&num[i]); } for(i=1;i<n;i++) for(j=0;j<i;j++) { if(num[i]>num[j]&&dp[i]<dp[j]+1) dp[i]=dp[j]+1; } ans=0; for(i=0;i<n;i++) if(dp[i]>ans) ans=dp[i]; printf("%d\n",ans); } return 0; }