思路:这个题和hdu1069很像,基本一模一样
代码:
#include <bits/stdc++.h> using namespace std; int a[1005],dp[1005]; int main() { int n; while(~scanf("%d",&n)&&n){ for(int i=0;i<n;i++){ scanf("%d",&a[i]); } memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++){ int maxe=0; for(int j=0;j<i;j++){ if(a[j]<a[i]) maxe=max(maxe,dp[j]); } dp[i]=maxe+a[i]; } int maxe=0; for(int i=0;i<n;i++){ maxe=max(maxe,dp[i]); } printf("%d\n",maxe); } return 0; }