1
2
3
4
5
6
7
8
9
10
11 #include
12 using namespace std;
13 const int N=1005;
14 int a[N];
15 int ans[N];
16 int n;
17 void DP()
18 {
19 int Max=0;
20 memset(ans,0,sizeof(ans));
21 for(int k=1;k<=n;k++)
22 {
23 for(int i=0;i<k;i++)
24 {
25 if(a[i]<a[k]&&ans[i]+a[k]>ans[k])
26 {
27 ans[k]=ans[i]+a[k];
28 if(ans[k]>Max)
29 Max=ans[k];
30 }
31 }
32 }
33 printf("%d\n",Max);
34 }
35 int main()
36 {
37 while(scanf("%d",&n),n)
38 {
39 for(int i=1;i<=n;i++)
40 scanf("%d",&a[i]);
41 DP();
42 }
43 }
hdu1087 参考答案 (2008-11-12 14:23:11由218编辑)