codevs 數字金字塔 1625

題目描述 Description
考慮在下面被顯示的數字金字塔.
寫一個程序來計算從最高點開始在底部任意處結束的路徑經過數字的和的最大.
每一步可以走到下方的點也可以到達右下方的點.
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
 在上面的樣例中,從 7 到 3 到 8 到 7 到 5 的路徑產生了最大和:30


輸入描述 Input Description

第一個行包含 R(1<= R<=1000) ,表示行的數目.
後面每行爲這個數字金字塔特定行包含的整數.
所有的被供應的整數是非負的且不大於 100

輸出描述 Output Description
單獨的一行包含那個可能得到的最大的和.

樣例輸入 Sample Input
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

樣例輸出 Sample Output

30


代碼:

  var
  a,f:array[1..1010,1..1010]of longint;
  n,i,j,ans:longint;


function max(x,y:longint):longint;
begin
  if x>y then exit(x)
         else exit(y);
end;


begin
  readln(n);
  for i:=1 to n do
    begin
      for j:=1 to i do
        read(a[i,j]);
      readln;
    end;
  for i:=n downto 1 do
    for j:=1 to n do
      f[i,j]:=max(a[i,j]+f[i+1,j],a[i,j]+f[i+1,j+1]);
  writeln(f[1,1]);
end.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章