探索地块建立

该代码示例展示了如何使用Java编程实现二维前缀和,以便在矩阵中进行高效查找。通过对输入的矩阵计算前缀和,然后在加权块内进行快速累加,确定满足特定条件的子矩形数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

探索地块建立

在这里插入图片描述
在这里插入图片描述

public static void main(String[] args) {
        int num=0;
        Scanner sc = new Scanner(System.in);
        String[] s = sc.nextLine().split(" ");
        int n = Integer.valueOf(s[0]);
        int m = Integer.valueOf(s[1]);
        //二维前缀和,为了方便写程序,给前缀和矩阵加上两个为0的边
        int[][] earth=new int[n+1][m+1];
        int c = Integer.valueOf(s[2]);
        int k = Integer.valueOf(s[3]);
        for (int i = 0; i < n; i++) {
            String[] s1 = sc.nextLine().split(" ");
            for (int i1 = 0; i1 < s1.length; i1++) {
                earth[i+1][i1+1]=Integer.valueOf(s1[i1])+earth[i][i1+1]+earth[i+1][i1]-earth[i][i1];
            }
        }
        //数组从[1][1]位置开始查找
        for (int i = 1; (i+c-1) < earth.length; i++) {
            for (int j = 1; (j+c-1) < earth[i].length; j++) {
                int add=earth[i+c-1][j+c-1]-earth[i-1][j+c-1]-earth[i+c-1][j-1]+earth[i-1][j-1];
                if (add>=k){
                    num++;
                }
            }
        }
        System.out.println(num);

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值