数字三角形

https://www.luogu.org/problemnew/show/P1216

从底往上推,每一个记录的都是下面两个中最大的路径和。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<queue>
 7 #include<stdlib.h>
 8 #define mem(a) memset(a,0,sizeof(a))
 9 using namespace std;
10 int v[1005][1005];
11 int f[1005][1005];
12 int main()
13 {
14  int n;
15  scanf("%d",&n);
16  for(int i=1;i<=n;i++)
17  for(int j=1;j<=i;j++)
18  scanf("%d",&v[i][j]);
19  for(int i=n;i>=1;i--)
20     for(int j=1;j<=i;j++)
21     f[i][j]=max(f[i+1][j],f[i+1][j+1])+v[i][j];
22   printf("%d\n",f[1][1]);
23   return 0;
24 }
View Code

 

posted @ 2019-01-12 14:11  XXrl  阅读(137)  评论(0编辑  收藏  举报