一種類型的DP,記錄上面的量的最優值。
#include <stdio.h>

int num[351];

int max(int a, int b)


{

if (a >= b)return a;
return b;
}

int main()


{

int n;
int i, j;
int t;
while (scanf("%d", &n) != EOF)

{
for (i=0; i<n; i++)

{
num[i] = 0;
}

for (i=0; i<n; i++)

{
for (j=i; j>=0; j--)

{
scanf("%d", &t);
if (j==0)

{
num[j] += t;
}
else

{
if (j==i)

{
num[j] = num[j-1] + t;
}
else

{
num[j] = max(num[j-1] + t, num[j] + t);
}
}
}
}
for (j=num[0], i=1; i<n; i++)

{
if (num[i] > j)

{
j = num[i];
}
}
printf("%d\n", j);
}
return 0;
}



















































































