您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

计算矩阵中对角线的总和

计算矩阵中对角线的总和

用英语发表评论会很好,但是,您的代码可以(第二循环):

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变化到-1i=0,n=3j=2j = n - i - 1))。

您可以在一个循环中完成所有这些操作(上面的代码)。

其他 2022/1/1 18:16:00 有415人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶