数字三角形问题
#include <cstdio>
#include <algorithm>
using namespace std;
int n,t;
int a[355][355],dp[2][355];
int main()
{
while (~scanf ("%d",&n)) {
for (int i=1;i<=n;i++) {
for (int j=1;j<=i;j++)
scanf ("%d",&a[i][j]);
}
for (int i=1;i<=n;i++)
dp[0][i]=a[n][i];
t=0;
for (int i=n-1;i>=1;i--) {
for (int j=1;j<=i;j++)
dp[1-t][j]=max(a[i][j]+dp[t][j],a[i][j]+dp[t][j+1]);
t=1-t;
}
printf ("%d\n",dp[t][1]);
}
return 0;
}