bzoj 1668

来源:互联网 发布:crm node online 编辑:程序博客网 时间:2024/05/16 06:54

题意: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



0 0
原创粉丝点击