zoukankan      html  css  js  c++  java
  • TZOJ 4475 The Coolest Sub-matrix(对角线前缀和)

    描述

    Given an N*N matrix, find the coolest square sub-matrix.
    We define the cool value of the square matrix as X-Y where X indicating the sum of all integers of the main diagonal and Y indicating the sum of the other diagonal.

    输入

    The first line has a positive integer N (2 ≤ N ≤ 400), the size of the matrix.
    The following N lines each contain N integers in the range [-1000, 1000], the elements of the matrix.

    输出

    Output the coolest value of a square sub-matrix.

    样例输入

    2
    1 -2
    4 5

    样例输出

    4

    题意:

    在n*n的矩阵中找到一个子矩阵,使得其 (正对角线整数之和-反对角线整数之和) 最大

    思路:

    记录矩阵中各对角线的前缀和,将所取对角线两端的前缀和相减,所得即为该对角线整数之和。

    #include<bits/stdc++.h>
    #define MAX 405
    using namespace std;
    int A1[MAX][MAX],A2[MAX][MAX];//A1正对角线前缀和 与 A2反对角线前缀和 
    int main()
    {
        int i,j,k,n,x,maxx=-1;
        cin>>n;
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
            {
                scanf("%d",&x);
                A1[i][j]=A1[i-1][j-1]+x;//左上加到右下 
                A2[i][j]=A2[i-1][j+1]+x;//右上加到左下 
            }
        }
        for(i=1;i<=n;i++)    //起始行位置i 
            for(j=1;j<=n;j++)//起始列位置j 
                for(k=1;k<=min(n+1-i,n+1-j);k++)//小矩阵边长k 
                    maxx=max(maxx,A1[i+k][j+k]-A1[i-1][j-1]-(A2[i+k][j]-A2[i-1][j+k+1]));
        cout<<maxx<<endl;
        return 0;
    } 
  • 相关阅读:
    SecureCRT安装
    wmv12下安装centos7
    SpringMVC(十二):SpringMVC 处理输出模型数据之@ModelAttribute
    oracle之 redo过高诊断
    oracle之 手动创建 emp 表 与 dept 表
    oracle之 11.2.0.4 bbed安装
    oracle12c之 控制pdb中sga 与 pga 内存使用
    storm之 Storm 工作原理
    spark之 spark 2.2.0 Standalone安装、wordCount演示
    hadoop之 参数调优
  • 原文地址:https://www.cnblogs.com/kannyi/p/9610277.html
Copyright © 2011-2022 走看看