http://poj.org/problem?id=2533
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int num[1000+100]; int dp[1000+100]; int main() { int n; int i,j; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { scanf("%d",&num[i]); dp[i]=1; } int maxx=1; //小细节 这里maxx需要初始化为 1 如果 为 0 当n=1时 输出为 0 for(i=n-2;i>=0;i--) { //int tmax=0; for(j=i+1;j<n;j++) { if(num[j]>num[i]&&dp[j]+1>dp[i]) dp[i]=dp[j]+1; } if(dp[i]>maxx) maxx=dp[i]; } printf("%d ",maxx); } return 0; }