首页 > 试题广场 >

在存储对称矩阵时,为了节省空间,通常可以用一个数组以行优先方

[单选题]

在存储对称矩阵时,为了节省空间,通常可以用一个数组以行优先方式只存储上三角阵来实现。请问如果一个100*100的矩阵用上述方法来实现存储,在原矩阵中位置为选项中哪一项的元素可以通过访问数组下标为2017的位置来获得?(   )数组和矩阵下标均从0开始。

  • (70,22)
  • (47,22)
  • (20,17)
  • (22,71)
答案应该选A吧

根据等差数列求和得公式为(100+100-(i-1))*i/2+j-i,即(201-i)*i/2+j-i
坐标在上三角的时候使用该公式,由对称矩阵可以将(70,22)坐标转换为(22,70),带入公式得
(201-22)*11+70-22=2017
编辑于 2017-08-12 13:47:52 回复(8)
选A(22 70) 前提应为对角线存储数值,否则矩阵缺失对角线信息,不可取。 下标从0开始,因此下标2017为第2018个元素,则前n行元素总数 + (n+1)行的列元素数 = 2018。 取前22行元素的个数利用等差数列可知(100+(100-21))/2*22=1969 第23行首个元素的坐标为(22,22),到(22,70)之间有70 - 22 + 1 = 49 个元素。 1969 + 49 = 2018个元素。因此选A(22 70) 。
发表于 2017-08-13 12:39:57 回复(1)
大致猜测一下,因为计算出来的是(22,70),没有这个选项,但是因为是对称矩阵,这个数可以在对称的位置找到。
发表于 2019-08-09 09:56:44 回复(0)
上三角矩阵若包含对角线元素则为(22,48)
若不包含则为(22,71)
编辑于 2017-08-12 13:10:46 回复(1)
矩阵是一个100*100的矩阵
(0,0)(0,1)(0,2)... (0,99)
       (1,1)(1,2)... (1,99)
               (2,2)... (2,99)
                        ...
                          (99,99)
找到2017的位置对应的值是2018
第22行的最后一位是(23*100)-(0+22)*23)/2) 2300 -253 =2047
2047-2017 = 30
所以在22行向后退30位,即为70,所以坐标是(22,70)又因为是对称矩阵(70,22)

发表于 2019-08-09 22:14:37 回复(0)
原谅我没有看题目:题目中存的是对称矩阵 我直接选了D .........
发表于 2019-01-21 11:25:58 回复(0)
别忘了最后还要减去当前行标(上三角没有前面一部分)
发表于 2018-03-23 13:39:30 回复(0)