对角线

10 分钟

方阵( 列)里有两条特殊的对角线。主对角线是从左上到右下那条,上面每个元素都满足行号等于列号,即 ;副对角线是从右上到左下那条,满足 。记住这两条判定式,就能一趟遍历把对角线元素挑出来。

int a[105][105], n;
int d1 = 0, d2 = 0;          // 主、副对角线的和
for (int i = 0; i < n; i++) {
    d1 += a[i][i];           // 主对角线:i == j
    d2 += a[i][n - 1 - i];   // 副对角线:i + j == n-1
}

因为只用一个下标 就能定位对角线上的元素,遍历对角线是 ,而不是 。常见坑:一是副对角线写成 i+j==n(差 1,会选错或越界),正确是 ;二是当 为奇数时,正中间那个元素 a[n/2][n/2] 同时在两条对角线上,如果分别求两条线的和再相加,这个中心点会被算两次,去重时要减掉它一次。

小纸条

4×4 矩阵的副对角线上,第 1 行是第几列?

登录 后可看答案

对角线 · 考级冲刺 · op599 课程