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

admin2015-06-03  62

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

选项 A、 
B、 
C、 
D、 

答案A

解析 对于这个题目,可以这样理解,题目要求按行优先,其含义就是存储第一行后,开始存储第二行,然后再存储第三行的非0元素,依次类推。这样可以发现了一个规律,第1行只有一个元素,第二行2个元素,第三行3个元素,第n行n个元素。
    显然,这个规律是一个递增数列。那么元素A[i,j]是第几行第几列就变得明显了。由于下标是从0开始的(这个要特别注意),那么下标为i的应该就是第i+1行,因此在存储下标为i的这行之前,应该存放了i行元素,其中第i行的元素个数为i个,那么在存放第i+1行之前,应该存放的元素个数总和为i(i+1)/2,。那么当存放到第i+1行时,在存放下标为j的元素前,同样的道理应该存放了j个元素,因此在存放元素A[i,j]之前,总共存放了的元素个数总和为i(i+1)/2+j,因此元素A[i,j]应该是第i(i+1)/2+j+1个要存放的元素,由于存放的数组M是从下标为1开始的。因此元素A[i,j]存储在数组M的M[i(i+1)/2+j+1]中。
转载请注明原文地址:https://kaotiyun.com/show/T3RZ777K
0

相关试题推荐
最新回复(0)