rq217 #include <iostream> #include <cstdlib> #include <cstring> #include <cctype> using namespace std; int n,a[10000]; static int dp[10000],hash[10000]; int i,j,maxn=0,max2=0,who,tot=0,num; int main() { cin>>n; num=n; for(i=1;i<=n;i++){cin>>a[i];} while(num>0) { for(i=1;i<=n;i++)dp[i]=1; max2=0; for(i=1;i<=n;i++) if(!hash[i]) for(j=1;j<i;j++) if(!hash[j]) { if(a[j]>=a[i]&&dp[j]+1>dp[i])dp[i]=dp[j]+1; if(dp[i]>maxn)maxn=dp[i]; if(dp[i]>max2){max2=dp[i];who=i;} } tot++; while(dp[who]>0) { hash[who]=1;num--;if(dp[who]==1)break; for(j=who-1;j>=1;j--)if(dp[j]==dp[who]-1&&!hash[j])break; who=j; } } cout<<maxn<<" "<<tot<<endl; return 0; } 还是CSDN好,代码高亮很漂亮,很容易上手。