文章目录
- 🐒个人主页
- 🏅JavaSE系列专栏
- 📖前言:本篇剖析一下二维子数组求和
- 规则:
🐒个人主页
🏅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]));}