bzoj 1668

题意:n*m的矩阵,从(1,1)出发,只能向(i,j+1)、(i-1,j+1)、(i+1,j+1)的格子前进,每个格子有一个权值,求到(n,m)的最大权值和

简单dp,注意要求从(1,1)出发,所以有的点是走不到的,更新的时候判断一下即可

var
        n,m             :longint;
        i,j             :longint;
        a,f             :array[0..110,0..110] of longint;
function max(a,b:longint):longint;
begin
   if a<b then exit(b) else exit(a);
end;

begin
   read(n,m);
   for i:=1 to n do
     for j:=1 to m do read(a[i,j]);
   f[1,1]:=a[1,1];
   for j:=2 to m do
     for i:=1 to n do
   begin
      if f[i-1,j-1]<>0 then f[i,j]:=max(f[i,j],f[i-1,j-1]);
      if f[i,j-1]<>0 then f[i,j]:=max(f[i,j],f[i,j-1]);
      if f[i+1,j-1]<>0 then f[i,j]:=max(f[i,j],f[i+1,j-1]);
      if f[i,j]<>0 then inc(f[i,j],a[i,j]);
   end;
   writeln(f[n,m]);
end.
——by Eirlys



相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页