代码:
#include<cstdio> #include<iostream> #include<cmath> using namespace std; int h[101],a[101]; int main(){ int k,n; int i,j,jj,ma=0,ans=0; cin>>k; for(i=1;i<=k;i++){ cin>>n; for(j=1;j<=n;j++)cin>>h[j]; for(j=1;j<=n;j++)a[j]=1; for(j=2;j<=n;j++){ ma=0; for(jj=1;jj<j;jj++) if(h[j]<h[jj]&&a[jj]>=ma)ma=a[jj]; a[j]+=ma; } for(j=1;j<=n;j++)ans=max(ans,a[j]); for(j=1;j<=n;j++)a[j]=1; for(j=2;j<=n;j++){ ma=0; for(jj=1;jj<j;jj++) if(h[j]>h[jj]&&a[jj]>=ma)ma=a[jj]; a[j]+=ma; } for(j=1;j<=n;j++)ans=max(ans,a[j]); cout<<ans<<endl; ans=0; } }
最长上升(下降)子序列、不要忘了清零(ma,ans)
时间: 2024-11-06 13:42:17