蓝桥杯题目:二维前缀和

首先分析一下二维数组的差分。sx2y2-sx1y1=sx2y2-sx2y1-1-sx1-1y2+sx1-1y1-1

因为对于二维数组x2y2-x1y1范围内的值需要通过x2y2减去从x1,y2-1的这段存储的前缀和以及减去x2-1,y1这两部分的前缀和,但是还有一个x1-1,y1-1这一段被减去了两次。我们可以通过举例例如:sum (2,2)∼(3,3)=sum 3,3−sum 1,3−sum 3,1+sum 1,1

以及二维数组的前缀和怎么求对于横轴来书和一维数组一样。sij=si-1j+aij

对于纵轴来说sij=sij+sij-1;

通过举例可得

sum (3,3)=sum2 ,3+a3,1+a3,2+a3,3

以下是代码实现

复制代码
package 二维数组前缀和;

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);


        int n=scan.nextInt();
        int m=scan.nextInt();
        int q=scan.nextInt();
        long [][] a=new long[n+1][m+1];
        long [][] s=new long[n+1][m+1];

        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                a[i][j]=scan.nextInt();
                s[i][j]=s[i][j-1]+a[i][j];

            }
            for (int j = 1; j <= m; j++) {
                s[i][j] += s[i - 1][j];  // 二维前缀和处理
            }

        }
        for(int i=0;i<q;i++)
        {
            int x1=scan.nextInt();
            int y1=scan.nextInt();
            int x2=scan.nextInt();
            int y2=scan.nextInt();
            System.out.println(caculate(x1,y1,x2,y2,s));

        }


        //在此输入您的代码...
        scan.close();
    }
    public static long caculate(int x1,int y1,int x2,int y2,long [][] s)
    {

        if(x1>x2||y1>y2)
        {
            return 0;
        }



        return s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1];

    }
}
相关推荐
阿维的博客日记2 小时前
Windows自由切换jdk版本
java·windows
江屿风2 小时前
C++图论基础单源最短路-常规版dijkstra算法/堆优化版dijkstra算法/bellman-ford 算法/spfa 算法流食般投喂
开发语言·c++·笔记·算法·图论
摇滚侠2 小时前
MyBatis 入门到项目实战 MyBatis 逆向工程 62
java·开发语言·mybatis
ch.ju2 小时前
Java Programming Chapter 4——Multi-level inheritance
java·开发语言
yuezhilangniao2 小时前
2026删除K8s命名空间 卡 Terminating 的 ns
java·容器·kubernetes
浮芷.2 小时前
鸿蒙 6.1 新特性-60fps流畅人物跳跃功能算法深度解析-鸿蒙PC端正弦值计算法
算法·华为·harmonyos·鸿蒙·鸿蒙系统
AI科技星2 小时前
数术工坊·第八卷 大道归一录・番外・下篇 零界封神・万法归元终章
网络·人工智能·算法·几何学·拓扑学
GZ_TOGOGO2 小时前
Spring AI Alibaba 格式化输出
java·人工智能·spring
Misnearch2 小时前
Leetcode热题100
算法·leetcode·职场和发展
心之伊始2 小时前
Spring AI Structured Output 实战:把大模型返回稳定转成 Java DTO
java·spring boot·大模型·spring ai·structured output