题11

题目

Q:【2016 统考真题】有一个 100 阶的三对角矩阵 M ,其元素 m[i, j] (1 ≤ i, j ≤ 100) 按行优先依次压缩存入下标从 0 开始的一维数组 N 中. 元素 m[30, 30]N 中的下标是 ( ).
A. 86
B. 87
C. 88
D. 89

分析

A:什么叫做三对角矩阵

写几个出来,然后手动归纳

B
三对角矩阵如下所示。

采用压缩存储,将 3 条对角线上的元素按行优先方式存放在一维数组 中,且 存放于 中, 其存储形式如下所示:


可以计算矩阵 中 3 条对角线上的元素 ${a}_{ij}( {1 \leq i,j \leq n,{i - j}\leq 1})\mathrm{B}k = {2i} + j - 3$ ,公式很难记忆,我们通常采用解法 2 。
解法 1: 针对该题,仅需将数字逐一代入公式: ,结果为 87 。
解法 2: 观察上图的三对角矩阵不难发现,第一行有两个元素,剩下的在元素 所在行之前的 28 行 (注意下标 ) 中,每行都有 3 个元素,而 之前仅有一个元素 , 不难发现元素 在数组 中的下标是
注意
矩阵和数组的下标从 0 或 1 开始 (如矩阵可能从 开始,数组可能从 开始), 这时就需要适时调整计算方法 (方法无非是多计算 1 或少计算 1 的问题)。