{{{ #!cplusplus /* hdu 1087 DP:严格递增子列最大和 ymc 2008/09/22 题目大意: 给定n个数的一个数列a1,a2,...an 求a的一个严格递增子列,是的子列的和最大。输出子列的最大和。 分析与解题思路: ans[k]为以a[k]结尾的严格递增子列的最大值。 则ans[k]=max{ans[i]+a[k]},满足1<=i using namespace std; const int N=1005; int a[N]; int ans[N]; int n; void DP() { int Max=0; memset(ans,0,sizeof(ans)); for(int k=1;k<=n;k++) { for(int i=0;ians[k]) { ans[k]=ans[i]+a[k]; if(ans[k]>Max) Max=ans[k]; } } } printf("%d\n",Max); } int main() { while(scanf("%d",&n),n) { for(int i=1;i<=n;i++) scanf("%d",&a[i]); DP(); } } }}}