數字金字塔

題目:ide

題目描述spa

觀察下面的數字金字塔。code

寫一個程序來查找從最高點到底部任意處結束的路徑,使路徑通過數字的和最大。每一步能夠走到左下方的點也能夠到達右下方的點。it

7 3 8 8 1 0io

2 7 4 4function

4 5 2 6 5class

在上面的樣例中,從7 到 3 到 8 到 7 到 5 的路徑產生了最大程序

輸入輸出格式di

輸入格式:
第一個行包含 R(1<= R<=1000) ,表示行的數目。view

後面每行爲這個數字金字塔特定行包含的整數。

全部的被供應的整數是非負的且不大於100。

輸出格式:
單獨的一行,包含那個可能獲得的最大的和。

做者思路:dp,和01揹包差很少

代碼:

var a:array[0..1001,0..1001] of longint;
    f:array[0..1001] of longint;
    n,i,j,ans:longint;
function max(a,b:longint):longint;
begin
  if a>b then exit(a) else exit(b);
end;
begin
  read(n);
  for i:=1 to n do
    for j:=1 to i do read(a[i,j]);
  f[1]:=a[1,1];
  for i:=2 to n do
    for j:=i downto 1 do
      f[j]:=max(f[j],f[j-1])+a[i,j];
  for i:=1 to n do
    if f[i]>ans then ans:=f[i];
  write(ans);
end.
相關文章
相關標籤/搜索