⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 message.pas

📁 noip2008提高组复赛源程序
💻 PAS
字号:
program message;
const
  maxn=55;

var
  a,g:array [0..maxn,0..maxn] of longint;
  f:array [0..maxn,0..maxn,0..maxn,0..maxn] of longint;
  n,m:longint;

procedure fileon;
begin
  assign(input,'message.in');
  assign(output,'message.out');
  reset(input);
  rewrite(output);
end;

procedure fileoff;
begin
  close(input);
  close(output);
end;

procedure scan;
var
  i,j:longint;
begin
  readln(m,n);
  for i:=1 to m do
    for j:=1 to n do
      read(a[i,j]);
end;

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

procedure print;
begin
  writeln(max(f[m-1,n,m,n-1],f[m,n-1,m-1,n]));
end;

procedure main;
var
  i,j,x,y:longint;
begin
  fillchar(f,sizeof(f),0);
  fillchar(g,sizeof(g),0);
  x:=0;
  for i:=1 to m do
    for j:=1 to n do
      begin
        inc(x);
        g[i,j]:=x;
      end;
  f[1,1,1,1]:=0;
  f[1,2,2,1]:=a[1,2]+a[2,1];
  for i:=1 to m do
    for j:=1 to n do
      for x:=1 to m do
        for y:=1 to n do
          if f[i,j,x,y]<>0 then
            begin
              if g[i+1,j]<>g[x+1,y] then
                f[i+1,j,x+1,y]:=max(f[i+1,j,x+1,y],f[i,j,x,y]+a[i+1,j]+a[x+1,y]);
              if g[i,j+1]<>g[x,y+1] then
                f[i,j+1,x,y+1]:=max(f[i,j+1,x,y+1],f[i,j,x,y]+a[i,j+1]+a[x,y+1]);
              if g[i+1,j]<>g[x,y+1] then
                f[i+1,j,x,y+1]:=max(f[i+1,j,x,y+1],f[i,j,x,y]+a[i+1,j]+a[x,y+1]);
              if g[i,j+1]<>g[x+1,y] then
                f[i,j+1,x+1,y]:=max(f[i,j+1,x+1,y],f[i,j,x,y]+a[i,j+1]+a[x+1,y]);
            end;

end;

begin
  fileon;
  scan;
  main;
  print;
  fileoff;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -