/* ID: m1590291 TASK: numtri LANG: C++ */ #include <iostream> #include <fstream> #include <algorithm> #include <string.h> using namespace std; /****************************************************************************************************************** 最简单的DP,入门级别。 从最后一层到第一层更加简单 ******************************************************************************************************************/ int a[1050][1050]; int f[1050][1050]; //为什么用 long long类型不能AC??? int main() { ifstream fin("numtri.in"); ofstream fout("numtri.out"); int T; while(fin>>T) { memset(f,0,sizeof(f)); for(int i = 1;i <= T;i ++) for(int j = 1;j <= i;j ++) fin>>a[i][j]; for(int i = T;i > 0;i --){ for(int j = 1;j <= i;j++) f[i][j] = a[i][j]+ max(f[i+1][j],f[i+1][j+1]); } fout<<f[1][1]<<endl; } return 0; }