软件工程

将10阶的上三角矩阵(非0元素分布在矩阵左上部)按照行优先顺序压缩存储到一维数组A中,则原矩阵中第4行第3列的非0元素在一维数组A中位于第()个元素位置。

题目

将10阶的上三角矩阵(非0元素分布在矩阵左上部)按照行优先顺序压缩存储到一维数组A中,则原矩阵中第4行第3列的非0元素在一维数组A中位于第()个元素位置。

参考答案和解析
正确答案:30
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。

【说明】

在一个矩阵中,如果其零元素的个数远远多于其非零元素的个数时,称这样的矩阵为稀疏矩阵。稀疏矩阵通常采用三元组数组表示。每个非零元素用一个三元组来表示,即非零元素的行号、列号和它的值。然后按某种顺序将全部非零元素的三元组存于一个数组中。例如,对于以下二维数组:

int x[3][4]={{1,0,0,0},{0,5,0,0),{0,0,7,2}};

可用以下数组a来表示:

int a[][3]={{3,4,4},{0,0,1},{1,1,5),{2,2,7},{2,3,2}};

其中三元数组a的第1行元素的值分别存储稀疏矩阵×的行数、列数和非零元素的个数。

下面的流程图描述了稀疏矩阵转换的过程。

【流程图】


正确答案:(1)a[0][2]=W; (2)x[i][j]≠0; (3)a[k][2]=x[i][j]; (4)k++; (5)i++;
(1)a[0][2]=W; (2)x[i][j]≠0; (3)a[k][2]=x[i][j]; (4)k++; (5)i++; 解析:本题考查程序流程图及数组的操作。
根据题目的意思,本题的流程图是用来描述稀疏矩阵转换过程的。而三元数组d的第1行元素的值分别用来存储稀疏矩阵x的行数、列数和非零元素个数,在第(1)空位置处,前面已经分别存储了稀疏矩阵x的行数和列数,只差非零元素的个数没有存储进数组a。因此,此空应该填a[0][2]=W。
在第(2)空的前面有两条判断语句,我们可以看出它们是为了保证取到的元素是稀疏矩阵中的元素,再往下我们应该判断此元素是否是0,因此,此空应该填x[i][j]≠0。
根据程序流程图,如果第(2)空中的条件为真,即取到的元素不为0,那么我们应该将该元素存放到三元数组a中,第(3)空的前面两条语句已经分别用于存储了稀疏矩阵非0元素的行号和列号,那么接下来应该是保存其值。因此,此空的答案是 a[k][2]=x[i][j]。
由题目中对三元数组a的描述可以知道,三元数组a的每一行只存储3个元素。再看流程图,第(4)空的前面三条语句都表示向三元数组a中存储一个元素。因此,如果再要往数组中添加元素,就需要存放到另外一行。因此,第(4)空应该是将数组的行号加1,即 k++。
结合流程图中三个判断语句的结构和作用来分析,第(5)空应该是i++,它的作用是保证能取到稀疏矩阵中每一行的元素。

第2题:

设有如下所示的下三角矩阵A[0..8,0..8],将该三角矩阵的非零元素(即行下标不小于列下标的所有元素)按行优先压缩存储在数组M[1..m]中,则元素A[i,j](0≤i≤8,j≤i)存储在数组M的(58)中。

A.

B.

C.

D.


正确答案:A
解析:本题中注意M数组从1开始,A[i,j]前有i行,元素个数分别为1,2,3……i共i*(i+1)/2个,加上A[i,0],A[i,1],……A[i,j]共j+1个,总计i*(i+1)/2+j+l。对应关系:M[1]-A[0,0],M[2]-A[1,0],……M[i*(i+1)/2+j+1]-A[i,j]。

第3题:

●假设一个6阶的下三角矩阵B按列优先顺序压缩存储在一维数组A中,其中A[0]存储矩阵的第一个元素b11,则A[14]存储的元素是 (52) 。

(52) A.b63

B.b62

C.b64

D.b53


正确答案:A
【解析】此题要寻找A[k]与b[i][j]之间的关系。6阶下三角阵b从第1列到第6列,每一列的元素个数依次为:6、5、4、3、2、1,元素总数为6×(6+1)/2=21。按列顺序存放在一维数组A[21]中(b11存放在A[0]中),列之前的第1列到第j-1列元素个数为:6+5+4+…+(6-(j-1)+1)=(6+6-(j-1)+1)×(j-1)/2=(14-j)×(j-1)/2。第i列上的第i行之前有i-j个元素。因此有:k=(14-i)×(j-1)/2+i-j。
已知k=14,根据每一列的元素个数,显然列号j应该满足条件2<j≤3,即j应该取值3。
于是有:k=(14-j)×(i-1)/2+i-j=(14-3)×(3-1)/2+j-3=8+i
i=k-8=14-8=6。所以,A[14]存储的是元素b63。

第4题:

特殊矩阵是非零元素有规律分布的矩阵,以下关于特殊矩阵的叙述中,正确的是( )。

A.特殊矩阵适合采用双向链表进行压缩存储
B.特殊矩阵适合采用单向循环链表进行压缩存储
C.特殊矩阵的所有非零元素可以压缩存储在一维数组中
D.特殊矩阵的所有零元素可以压缩存储在一维数组中

答案:C
解析:
本题考查数据结构基础知识。
对于矩阵,压缩存储的含义是为多个值相同的元素只分配一个存储单元,对零元素不分配存储单元。如果矩阵的零元素有规律地分布,则可将其非零元素压缩存储在一维数组中,并建立起每个非零元素在矩阵中的位置与其在一维数组中的位置之间的对应关系。

第5题:

设有一个10阶的对称矩阵A[10][10],采用压缩存储方式按行将矩阵中下三角部分的元素存入一维数组B[]中,A[0][0]存入B[0]中,则A[8][5]在B[]中( )位置。

A.32

B.33

C.41

D.65


正确答案:C
解析:设有一个10阶的对称矩阵A[10][10],采用压缩存储方式按行将矩阵中下三角部分的元素存入一维数组B[]中,A[0][0]存入B[0]中,则A[8][5]在B[]中41=1+2+3+4+5+6+7+8+5位置。

第6题:

将一个n阶三对角矩阵A的三条对角线上的元素按行压缩存放于一个一维数组B中, A[0][0]存放于B[0]中。对于任意给定数组元素A[i][j],它应是数组A中第______行的元素。


正确答案:2i+j-3
2i+j-3 解析:在三对角矩阵中,按行压缩存储,其转换公式为k=2i+j-3。

第7题:

●设下三角矩阵(上三角部分的元素值都为 0)A[0..n,0..n]如下所示,将该三角矩阵的所有非零元素(即行下标不小于列下标的元素)按行优先压缩存储在容量足够大的数组M[ ]中(下标从1 开始),则元素 A[I,j](O≤i≤n,j≤i)存储在数组M 的 (57) 中。


正确答案:A
试题(57)分析本题考查数组存储的基础知识。按行方式存储时,元素A[i,j]之前的元素个数为(1+2+…+i+j),由于数组M的下标从1开始,因此,存储A[i,j]的是M[1+2+…+i+j+1],即M[i(i+1)/2+j+1]。参考答案(57)A

第8题:

设下三角矩阵A:

如果以行序为主序将A的非零元素存储在一维数组B[n(n+1)/2]中,那么A的第i行第j列的非零元素aij(i≥j)在数组B中的下标为______。


正确答案:B
解析:按行优先存储就是把矩阵中的数据一行一行地顺次存入存储单元,此题中就按a11、a21、a22、a31、a32、a33、…、an1、an2、an3、…、ann的顺序来存储。从第1行到第i-1行(a11~ai-1,i-1)共有个非零元素;在第i行,从ai1至aij共有j个非零元素,因此a11至aij共有个非零元素,而a11对应的下标为0,于是aij对应的下标为。

第9题:

带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中(41)。

A.第i行非∞且非0的元素个数

B.第i列非∞且非0的元素个数

C.第i列非∞的元素之和

D.第i行非∞的元素之和


正确答案:B
解析:本题考查带权有向图的邻接矩阵存储。带权有向图的邻接矩阵反映顶点间的邻接关系,设G=(V,E)是具有n(n1)个顶点的图,G的邻接矩阵M是一个n行n列的矩阵,并有若(i,j)或i,j>∈E,则M[i][j]=权值;否则,M[i][j]=0。因此,对于有向图,其邻接矩阵的第i行非0元素个数为顶点i的出度,而邻接矩阵的第i列非0元素个数为顶点j的入度。

第10题:

设有一个15阶的对称矩阵A,采用压缩存储方式将其下三角部分以行序为主序存储到一维数组b中。(矩阵A的第一个元素为a1,1,数组b的下标从1开始),则数组元素b[13]对应A的矩阵元素是()。

Aa5,3

Ba6,4

Ca7,2

Da6,8


A

更多相关问题