1. 程式人生 > >codevs動態規劃 數字三角形

codevs動態規劃 數字三角形

如圖所示的數字三角形,從頂部出發,在每一結點可以選擇向左走或得向右走,一直走到底層,要求找出一條路徑,使路徑上的值最大。

分析:超菜的一道倒推題(完全無腦==)

動態轉移方程:f[i,j]:=max(f[i+1,j],f[i+1,j+1])+f[i,j];

const
  maxn=100;


var
  a:array[1..maxn,1..maxn] of longint;
  i,j,n:longint;


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


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