C# 计算矩阵对角线上的数之和

C# 计算矩阵对角线上的数之和,c#,matrix,C#,Matrix,我有一个动态矩阵,我需要以这种方式计算数字之和: 0123456 10111213141516 20 2122 2324 25 26 30 31 3233 3435 36 40 41 42 4344 4546 50515253545556 60 61 62 63 64 6566 我不明白应该用哪种方式比较I和j: long result = 0; for (int i = 0; i < len; i++) { for (int j = 0; j < len; j++)

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

0123456

10111213141516

20 2122 2324 25 26

30 31 3233 3435 36

40 41 42 4344 4546

50515253545556

60 61 62 63 64 6566

我不明白应该用哪种方式比较
I
j

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];
        }
    }
}
long结果=0;
对于(int i=0;i
无需扫描整个矩阵:

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
}
long结果=0;
对于(int i=0;i

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

//将底部行的角点值指定给结果
长结果=矩阵[len-1][len-1];
//对于每行(最后一行除外!)添加对角线值和对角线值旁边的值
对于(int i=0;i
// 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];