【题解】P1216 [IOI 1994 / USACO1.5] 数字三角形
P1216 [IOI 1994 / USACO1.5] 数字三角形(洛谷题面)
题目
题目描述:
观察下面的数字金字塔。
写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。

在上面的样例中,从 7→3→8→7→5 的路径产生了最大权值。
输入格式:
第一个行一个正整数 r,表示行的数目。
后面每行为这个数字金字塔特定行包含的整数。
输出格式:
单独的一行,包含那个可能得到的最大的和。
数据范围与说明:
【数据范围】
对于 100% 的数据,1≤r≤1000,所有输入在 [0,100] 范围内。
题目翻译来自 NOCOW。
IOI1994 Day1T1 / USACO Training Section 1.5。
输入输出样例 #1
输入:
1 2 3 4 5 6
| 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
|
输出:
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include<bits/stdc++.h> using namespace std; int a[1010][1010],f[1010][1010]; int main(){ int n,s=0; cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) f[i][j]=max(f[i-1][j-1],f[i-1][j])+a[i][j]; for(int j=1;j<=n;j++) s=max(s,f[n][j]); cout<<s; return 0; }
|