求任意一个矩阵的所有元素和,其实涉及到了相应的四个矩阵,如要计算A(x1,y1)--A(x2,y2)的矩阵元素和,只需矩阵A(0,0)--A(x2,y2) 减去 矩阵A(0,0)--A(x1-1,y2) 减去 矩阵A(0,0)--A(x2,y1-1) 加上 矩阵A(0,0)--A(x1-1,y1-1) 可画一下图,比较直观,最后一个矩阵为第二个和第三个多减去的部分,所以最后要加上;原问题就转换成如何计算从A(0,0)开始的四个矩阵元素和,此时我们依然可以有类似于上面的方式得出结果,代码为
for(i=1;i<=r;i++)
{
for(j=1;j<=c;j++)
{
scanf("%d",&num[i][j]);
num[i][j]+=(num[i-1][j]+num[i][j-1]-num[i-1][j-1]);//输入的时候马上更新数据,这里的num[i][j]保存的即为矩阵A(0,0)---A(i,j)的元素和
}
}
根据最上面的公式,结果为
sum=num[x2][y2]-num[x1-1][y2]-num[x2][y1-1]+num[x1-1][y1-1];
printf("%d\n",sum);