求二维子数组的和(剖析)

🐒个人主页

🏅JavaSE系列专栏

📖前言:本篇剖析一下二维子数组求和

规则:

这是一个4 X 4的二维数组a[][]
在这里插入图片描述
假设再来一个4 X 4的空数组,
第一个位置是a[0][0],(前一个元素的和)
第二个位置是a[0][0]+a[0][1]+a[0][2],(前两个元素的和)
第三个位置是a[0][0]+a[0][1]+a[0][2],(前三个元素的和)
第四个位置是a[0][0]+a[0][1]+a[0][2]+a[0][3],
第五个位置是a[0][0]+a[1][0],

在这里插入图片描述

那么用java程序应该如何实现呢:
在这里插入图片描述
比如说:求值为7这个位置的和:1+2+3+5+6+7
在这里插入图片描述
可以分解为:三个红色的-一个重复的绿色
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
即:在这里插入图片描述

  //初始化数组
        int [][] a=new int[2][2];
        for (int i = 0; i <a.length ; i++) {
            for (int j = 0; j <a[i].length ; j++) {
                a[i][j]=1;
            }
            System.out.println(Arrays.toString(a[i]));
        }
        //存储求和的数组
        int[][] sum=new int[a.length+1][a[0].length+1];//这里需要额外加一行+加一列
        for (int i = 1; i <sum.length ; i++) {
            for (int j = 1; j <sum.length ; j++) {//核心语句:
                sum[i][j]=sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1]+a[i-1][j-1];//行成立的+列成立的-重合的+新增的
            }
        }

        //打印出结果
        for (int i = 0; i <sum.length ; i++) {
            System.out.println(Arrays.toString(sum[i]));
        }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信计2102罗铠威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值