对于一个n阶的对称矩阵A,将其下三角区域(含主对角线)的元素按行存储在一维数组S

题库2022-08-02  42

问题 对于一个n阶的对称矩阵A,将其下三角区域(含主对角线)的元素按行存储在一维数组S中,设元素A[j]存放在S[k]中,且S[1]=A[0][0],则k与i,j(i≤j)的对应关系是()。A.k=i(i+1)/2+j-1B.k=j(j+1)/2+i+1C.k=i(i+1)/2+j+1D.k=j(j+1)/2+i-1

选项 A.k=i(i+1)/2+j-1
B.k=j(j+1)/2+i+1
C.k=i(i+1)/2+j+1
D.k=j(j+1)/2+i-1

答案 B

解析 本题有隐含条件需要注意,虽然前半段描述的是我们存储的下三角部分元素,但是最后提问的是i<=j情况下,元素下标与k的对应关系,此时已经指向的是其对称元素位置了。
【方法1】可用代入法解决问题。
将S[1]=A[0][0]实例,对应上三角元素A[0][0],代入选项验证可得,只有B和C选项符合要求;
根据按行存储的顺序来看,下一个元素应该是A[1][0],对应上三角元素A[0][1],对应的一维数组位置为S[2],代入BC选项进行验证,选项结果都为2,无法区分;
根据按行存储的顺序来看,接下来元素应该是A[1][1],对应上三角元素A[1][1],对应的一维数组位置为S[3],代入BC选项进行验证,选项结果都为3,无法区分;
根据按行存储的顺序来看,接下来元素应该是A[2][0],对应上三角元素A[0][2],对应的一维数组位置为S[4],代入BC选项进行验证,选项C结果为3不符合要求,选项B结果为4是正确的选项;
所以本题选择B选项。
【方法2】也可以根据规律分析。对于对称矩阵A[][]结构如下:
A[0][0]A[0][1]A[0][2]...A[0][n-1]A[0][n]
A[1][0]A[1][1]A[1][2]...A[1][n-1]A[1][n]
A[2][0]A[2][1]A[2][2]...A[2][n-1]A[2][n]
...
A[n-1][0]A[n-1][1]A[n-1][2]...A[n-1][n-1]A[n-1][n]
A[n][0]A[n][1]A[n][2]...A[n][n-1]A[n][n]
S[1]对应A[0][0],对于下三角元素A[j](i>=J),按行存储时,先处理前i-1行元素,此时每行对应元素分别为1、2、3、...、i-1、i个,求和,结果为(1+i)*i/2。接着处理第i行数据,本行列下标分别为0、1、2、...、j-1、j,共有j+1个元素。所以A[j]元素从S[1]开始,对应k=i(i+1)/2+j+1下标。这是下三角位置的分析过程。
再根据本题问题,i<=j的元素,此时是对称的上三角区域元素,对称关系为A[j]=A[j],将上面的表达式i、j位置互换即可,结果为k=j(j+1)/2+i+1。答案选择B选项。
转载请注明原文地址:https://tihaiku.com/congyezige/2409596.html

最新回复(0)