http://poj.org/problem?id=3176 水题 #include<iostream> #include<stdio.h> #include<string.h> #include<string> using namespace std; int N; int map[355][355]; void DP() { for(int i=N-1;i>=1;--i) for(int j=1;j<=i;++j) map[i][j]+=max(map[i+1][j],map[i+1][j+1]); } int main() { while(scanf("%d",&N)!=EOF) { memset(map,0,sizeof(map)); //录入数据 for(int i=1;i<=N;++i) for(int j=1;j<=i;++j) scanf("%d",&map[i][j]); DP(); printf("%d/n",map[1][1]); } return 0; }