将一个 10×10 的对称矩阵 m 的上三角部分的元素 m i,j (1≤i≤j≤10)按列优先存入c语言的一维数组 n 中,元素 m 7,2 在 n在中的下标是:
时间: 2023-05-31 12:18:28 浏览: 549
### 回答1:
元素 m 7,2 在上三角部分的第 2 列第 7 行,按列优先存入一维数组 n 中,即先存储第 1 列的元素,再存储第 2 列的元素,以此类推。因此,元素 m 7,2 在 n 中的下标为:
n[2 + 6 + 5 + 4 + 3 + 2 + 1] = n[23]
### 回答2:
对称矩阵 m 的上三角部分包括主对角线及其以上的所有元素,总共有 55 个元素(10+9+8+7+6+5+4+3+2+1)。由于矩阵对称,只需要将上三角部分存储在一维数组中,即可达到节约空间的目的。
按列优先存储矩阵 m 的上三角部分的元素到一维数组 n 中,需要按列从上至下,从左到右的顺序存储。也就是先存储矩阵 m 第一列的上三角元素,再存储第二列的上三角元素,以此类推,最后存储矩阵 m 最后一列的上三角元素。这些元素在一维数组 n 中的下标可以根据数组 n 的存储顺序计算得出:
n[0] 对应矩阵 m 的 m[1][1]
n[1] 对应矩阵 m 的 m[2][1]
n[2] 对应矩阵 m 的 m[2][2]
n[3] 对应矩阵 m 的 m[3][1]
n[4] 对应矩阵 m 的 m[3][2]
n[5] 对应矩阵 m 的 m[3][3]
n[6] 对应矩阵 m 的 m[4][1]
n[7] 对应矩阵 m 的 m[4][2]
n[8] 对应矩阵 m 的 m[4][3]
n[9] 对应矩阵 m 的 m[4][4]
...
n[53] 对应矩阵 m 的 m[10][9]
n[54] 对应矩阵 m 的 m[10][10]
因此,需要求出元素 m[7][2] 在一维数组 n 中的下标。根据上面的计算公式,可以得到:
n[17] = m[7][2]
其中 n[17] 对应矩阵 m 的第 2 列的第 7 个上三角元素。通过类似的方法,可以求出对称矩阵 m 中任意一个上三角元素在一维数组 n 中的下标。
### 回答3:
将一个10×10的对称矩阵m的上三角部分的元素mi,j(1≤i≤j≤10)按列优先存入c语言的一维数组n中,可以先按列存储矩阵:
m = 1 2 3 4 5 6 7 8 9 10
* 11 12 13 14 15 16 17 18 19
* * 22 23 24 25 26 27 28
* * * 33 34 35 36 37
* * * * 44 45 46 47
* * * * * 55 56 57
* * * * * * 66 67
* * * * * * * 77
* * * * * * * * 88
* * * * * * * * * 99
按列存储后,能够得到一维数组:
n = 1 11 22 33 44 55 66 77 88 99 2 12 23 34 45 56 67 78 89 3 13 24 35 46 57 68 79 4 14 25 36 47 58 69 5 15 26 37 48 59 6 16 27 38 49 7 17 28 39 8 18 29 9 19 10
其中n(i,j)=m(j,i)。
要求元素m7,2在n中的下标,可以通过以下方法求解:
首先,我们找到一般情况下下标为(i,j)的元素在一维数组n中的下标k的计算公式:
k = (i-1)*10 + j - (i-1)*(i-2)/2
由于本题中要求的m7,2是在上三角部分,所以可以将上述公式中的i和j互换,即i=2,j=7:
k = (2-1)*10 + 7 - (2-1)*(2-2)/2 = 16
因此,m7,2在n中的下标为16。
阅读全文