【问题标题】:Calculate sum of numbers on matrix diagonal计算矩阵对角线上的数字总和
【发布时间】:2016-05-02 19:59:42
【问题描述】:

我有一个动态矩阵,我需要以这种方式计算数字总和:

0 1 2 3 4 5 6

10 11 12 13 14 15 16

20 21 22 23 24 25 26

30 31 32 33 34 35 36

40 41 42 43 44 45 46

50 51 52 53 54 55 56

60 61 62 63 64 65 66

我不明白应该以哪种方式比较 ij

long result = 0;
for (int i = 0; i < len; i++)
{
    for (int j = 0; j < len; j++)
    {
        // only works for diagonal
        if (i == j) // should use j - 1 or i - 1? 
        {
            result += matrix[i][j];
        }
    }
}

【问题讨论】:

    标签: c# matrix


    【解决方案1】:

    无需扫描全矩阵

    long result = 0;
    for (int i = 0; i < len; i++)
    {
         result += matrix[i][i];      // diagonal
         if (i < len - 1)             // stay within array bounds
            result += matrix[i][i+1]; // next to diagonal
    }
    

    每次迭代时不检查索引的修改:

    // assign corner value from bottom row to result
    long result = matrix[len-1][len-1];
    // for each row (except last!) add diagonal and next to diagonal values
    for (int i = 0; i < len-1; i++)    
         result += matrix[i][i] + matrix[i][i+1];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多