您的位置:首页 > 其它

USACO 1.5 数字金字塔

2016-04-08 21:43 197 查看
Description考虑在下面被显示的数字金字塔。写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大。每一步可以走到左下方的点也可以到达右下方的点。
73 88 1 02 7 4 44 5 2 6 5在上面的样例中,从7 到 3 到 8 到 7 到 5
的路径产生了最大和:30Input第一个行包含 R(1<= R<=1000)
,表示行的数目。后面每行为这个数字金字塔特定行包含的整数。所有的被供应的整数是非负的且不大于100。Output单独的一行包含那个可能得到的最大的和。Sample Input
5

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5
Sample Output
30



解题思路:用一个二维数组储存数据,然后用双重循环统计该路径的和,然后找出最大和,输出即可。



程序:

var

a:array[0..1000,0..1000]of longint;

n,i,j,max:longint;

begin

readln(n);

for i:=1 to n do

for j:=1 to i do

read(a[i,j]);

for i:=2 to n do

for j:=1 to i do

if a[i-1,j]+a[i,j]>=a[i-1,j-1]+a[i,j] then inc(a[i,j],a[i-1,j])

else inc(a[i,j],a[i-1,j-1]);

max:=-maxlongint;

for i:=1 to n do

if a[n,i]>max then max:=a[n,i];

write(max);

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: