正在加载图片...
4-1设有一个二维数组AⅧm,假设A[OI0]存放位置在64410,4[2[2]存放位置在67610,每个元素 占一个空间,问A[3IB3o存放在什么位置?脚注(0表示用10进制表示 【解答】 设数组元素A[[存放在起始地址为Loc(i,j)的存储单元中 ∵Loc(2,2)=Loc(0,0)+2*n+2=644+2*n+2=676 ∴n=(676-2-644)/2=15 Loc(3,3)=Loc(0,0)+3*15+3=644+45+3=692 4-2设有一个nXn的对称矩阵A,如图(a)所示。为了节约存储,可以只存对角线及对角线以上的元素, 或者只存对角线或对角线以下的元素。前者称为上三角矩阵,后者称为下三角矩阵。我们把它们按行 存放于一个一维数组B中,如图(b)和图(c)所示。并称之为对称矩阵A的压缩存储方式。试问: (1)存放对称矩阵A上三角部分或下三角部分的一维数组B有多少元素? (2)若在一维数组B中从0号位置开始存放,则如图(a)所示的对称矩阵中的任一元素a在只存上 三角部分的情形下(图(b)应存于一维数组的什么下标位置?给出计算公式 (3)若在一维数组B中从0号位置开始存放,则如图(a所示的对称矩阵中的任一元素a在只存下 三角部分的情形下(图(c)应存于一维数组的什么下标位置?给出计算公式。 【解答】 (1)数组B共有n+(n-1)+……+1=n*(n+1)/2个元素。 011 12:*:: in 21a22: anni Int an2…an (a)对称矩阵 (b)只存上三角部分 (c)只存下三角部分 a1102|…a1na2|…az ang11a21a22…m1n|an1…ann|ann (2)只存上三角部分时,若i≤j,则数组元素A[前面有i-1行(1~i-1,第0行第0列不算), 第1行有n个元素,第2行有n-1个元素,………,第i-1行有n-i+2个元素。在第i行中,从对角线算 起,第j号元素排在第j-i+1个元素位置(从1开始),因此,数组元素A[[在数组B中的存放位置 为 n+(n-1)+(n-2)+…+(n-1+2)+J-+1 =(2n-1)*(i-1)/2+ 若i>j,数组元素A[在数组B中没有存放,可以找它的对称元素A[I[。在 数组B的第(2n-)*-1)/2+i位置中找到。4-1 设有一个二维数组 A[m][n],假设 A[0][0]存放位置在 644(10),A[2][2]存放位置在 676(10),每个元素 占一个空间,问 A[3][3](10)存放在什么位置?脚注(10)表示用 10 进制表示。 【解答】 设数组元素 A[i][j]存放在起始地址为 Loc ( i, j ) 的存储单元中。 ∵ Loc ( 2, 2 ) = Loc ( 0, 0 ) + 2 * n + 2 = 644 + 2 * n + 2 = 676. ∴ n = ( 676 - 2 - 644 ) / 2 = 15 ∴ Loc ( 3, 3 ) = Loc ( 0, 0 ) + 3 * 15 + 3 = 644 + 45 + 3 = 692. 4-2 设有一个 nn 的对称矩阵 A,如图(a)所示。为了节约存储,可以只存对角线及对角线以上的元素, 或者只存对角线或对角线以下的元素。前者称为上三角矩阵,后者称为下三角矩阵。我们把它们按行 存放于一个一维数组 B 中,如图(b)和图(c)所示。并称之为对称矩阵 A 的压缩存储方式。试问: (1) 存放对称矩阵 A 上三角部分或下三角部分的一维数组 B 有多少元素? (2) 若在一维数组 B 中从 0 号位置开始存放,则如图(a)所示的对称矩阵中的任一元素 aij 在只存上 三角部分的情形下(图(b))应存于一维数组的什么下标位置?给出计算公式。 (3) 若在一维数组 B 中从 0 号位置开始存放,则如图(a)所示的对称矩阵中的任一元素 aij 在只存下 三角部分的情形下(图(c))应存于一维数组的什么下标位置?给出计算公式。 【解答】 (1) 数组 B 共有 n + ( n-1 ) + + 1= n * ( n+1 ) / 2 个元素。 (2) 只存上三角部分时,若 i  j,则数组元素 A[i][j]前面有 i-1 行(1i-1,第 0 行第 0 列不算), 第 1 行有 n 个元素,第 2 行有 n-1 个元素,,第 i-1 行有 n-i+2 个元素。在第 i 行中,从对角线算 起,第 j 号元素排在第 j-i+1 个元素位置(从 1 开始),因此,数组元素 A[i][j]在数组 B 中的存放位置 为 n + (n-1) + (n-2) +  + (n-i+2) + j-i+1 = (2n-i+2) * (i-1) / 2 + j-i+1 = (2n-i) * (i-1) / 2 + j 若 i > j,数组元素 A[i][j]在数组 B 中没有存放,可以找它的对称元素 A[j][i]。在 数组 B 的第 (2n-j) * (j-1) / 2 + i 位置中找到
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有