设下三角矩阵(上三角部分的元素值都为0)A[0..n,0..n]如下所示,将该三

免费题库2022-08-02  34

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

选项

答案 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://tihaiku.com/congyezige/2409924.html

最新回复(0)