最大上升子序列:有 n 个数,每次取的数都必须比前一个取的数大
dp[i] 为以 i 结尾的最大上升子序列
由 max(dp[j] )转移过来,因为 dp[j] 以 a[j] 结尾,所以只要判断 a[i]>a[j] 即可
当然别忘了初始化
const int N=1000+5;
int n,m,t;
int i,j,k;
int a[N];
int dp[N];
int main()
{
//IOS;
while(~sd(n)){
if(n==0) break;
for(i=1;i<=n;i++) sd(a[i]);
int maxx=0;
for(i=1;i<=n;i++){
dp[i]=a[i];
for(j=1;j<i;j++){
if(a[i]>a[j]) dp[i]=max(dp[i],dp[j]+a[i]);
}
maxx=max(maxx,dp[i]);
}
pd(maxx);
}
//PAUSE;
return 0;
}