browse all rows
browse all cells
if i == j (is in main diagonal):
increase one sum
if i == n - i + 1 (the other diagonal)
increase the second sum
更好,更有效的代码(使用n
,而不是n^2
)将是:
for( int i = 0; i < n; i++){
d += a[i][i]; // main diagonal
s += a[i][n-i-1]; // second diagonal (you'll maybe need to update index)
}
它穿过对角线(都在一个循环中!),而不会穿过其他项目。
主对角线具有坐标{(1,1), (2,2), ..., (i,i)}
(因此i == j
)。
次对角线具有坐标(在矩阵3x3中):{(1,3), (2,2),(3,1)}
通常为:{(1,n-1+1), (2, n-2+1), ... (i, n-i+1), .... (n,1)}
。但是在C语言中,数组是从0开始索引的,而不是从1开始的索引,因此您将不需要+1
(可能)。
所有除有适合条件的二次对角线的项目:i == n - j + 1
(再次,由于C中的索引从0+1
变化到-1
(i=0,
,n=3
,j=2
,j = n - i - 1
))。