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

📄 p1143.bak

📁 www.vijos.cn上一些习题的参考源码
💻 BAK
字号:
program ss;
const
    d:array[0..2] of byte=(0,1,0);
    MAXN=8;
var
    map:array[1..MAXN,1..MAXN] of word;
    f0,f1:array[1..MAXN,1..MAXN] of word;
    val,x1,y1,x2,y2,xx1,yy1,xx2,yy2:word;
    n,x,y,i,d1,d2:byte;
    t1,t2:word;
    fin:text;
    
    function bound(x,y:byte):boolean;
    begin
        if ((x>=1)and(x<=n)) and ((y>=1)and(y<=n)) then
            bound:=true
        else
            bound:=false;
    end;
    
    function max(a,b:word):word;
    begin
        if a>=b then max:=a
        else max:=b;
    end;
    
begin
    assign(fin,'in.dat');reset(fin);
    readln(fin,n);
    readln(fin,x,y,val);
    while (x<>0)or(y<>0)or(val<>0) do
    begin
        map[x,y]:=val;
        readln(fin,x,y,val);
    end;
    
    fillchar(f0,sizeof(f0),0);
    f0[1,1]:=0;
    for i:=2 to n+n-1 do begin
        fillchar(f1,sizeof(f1),0);
        for x1:=1 to i-1 do begin
            for x2:=1 to i-1 do begin
                y1:=i-x1; y2:=i-x2;
                if bound(x1,y1) and bound(x2,y2) then begin
                    for d1:=0 to 1 do begin
                        for d2:=0 to 1 do begin
                            {d1:(x1,y1)->(xx1,yy1);
                            d2:(x2,y2)->(xx2,yy2);}
                            xx1:=x1+d[d1]; yy1:=y1+d[d1+1];
                            xx2:=x2+d[d2]; yy2:=y2+d[d2+1];
                            if (bound(xx1,yy1) and bound(xx2,yy2)) and ((d1<>d2) or (xx1<>xx2)) then begin
                                if xx1=xx2 then t1:=f0[x1,x2]+map[xx1,yy1]
                                else t2:=f0[x1,x2]+map[xx1,yy1]+map[xx2,yy2];
                                if max(t1,t2)>f1[xx1,xx2] then f1[xx1,xx2]:=max(t1,t2);
                            end;
                        end;
                    end;
                end;
            end;
        end;
        f0:=f1;
    end;
    writeln(f0[n,n]);
    readln;
end.

⌨️ 快捷键说明

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