JZOJ__Day 1【NOIP普及模拟】MATRIX

题目描述

   总所周知,我们住在一个N*N的方阵(正方形)里面。其中每个小格子中都有一个整数。为了离开这个方阵,我们必须找到

最美丽的子方阵。如果我们定义A为某个方阵主对角线上的和,定义B为某个方阵副对角线上的和,那这个方阵的美丽值就是A-B。 

输入


    第一行包括一个正整数N(2<=N<=400),表示这个方阵的边长。接下来N行,每行包括N个整数,范围在-1000到1000之间,代表方阵中的各个整数。




输出


    只有一行一个整数表示我们可以找到的最美丽子方阵的美丽值。

样例输入


样例输出


数据范围限制

提示



分析

这题要用到



程序:

        

uses math;
var
n,i,j,k,ans:longint;
a,y,x:array[0..500,0..500]of longint;
begin
    readln(n);
    for i:=1 to n do
    for j:=1 to n do
    begin
        read(a[i,j]);
        x[i,j]:=x[i-1,j-1]+a[i,j];
    end;
    for i:=1 to n do
    for j:=n downto 1 do
    y[i,j]:=y[i-1,j+1]+a[i,j];
    for i:=2 to n do
    for j:=2 to n do
    for k:=2 to min(i,j) do
    ans:=max(ans,(x[i,j]-x[i-k,j-k])-(y[i,j-k+1]-y[i-k,j+1]));
    write(ans);
end.

posted @ 2017-07-09 07:24  银叶草  阅读(262)  评论(0编辑  收藏  举报
Live2D