个人主页
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]));
}