首页 > 试题广场 > 设有一个n阶的下三角矩阵A,如果按照行的顺序将下三角矩阵中的
[单选题]
设有一个n阶的下三角矩阵A,如果按照行的顺序将下三角矩阵中的元素(包括对角线 上元素)存放在n(n+1)个连续的存储单元中,则A[i][j]与 A[0][0]之间有[$##$]个数据元素(即不算A[i][j]和A[0][0])。
  • j<=i ? i*(i+1)/2 +j-1: i*(i+1)/2+i
  • j>=i ? i*(i+1)/2 +j-1: i*(i+1)/2+i
  • j>=i ? i*(i+1)/2 +j: i*(i+1)/2+1
  • j<=i ? i*(i+1)/2 +j+1: i*(i+1)/2+1
推荐
由题目可知,数组A[n][n]从A[0][0],开始。
所以A[ i ][ j ]中,当 i>=j 时,
    A[ i ][ j ]位于下三角矩阵中。
    第0行,1个元素(此A[0][0]元素不计入,所以要去掉)== > (1-1)
    第(i-1)行,i个元素
    第 i 行,(j+1)个元素(从 0~j 一共有(j+1)个元素,由于A[i][j]不计入在内,所以要去掉一个)==> ((j+1)-1)
    结果为:(1-1)+2+3+...+i+((j+1)-1) = i*(i+1)/2+j -1

i < j
    A[ i ][ j ]位于上三角矩阵中。故计算到A[ i ][ i ]即可,且包括A[ i ][ i ].
    第0行,1个元素(此A[0][0]元素不计入,所以要去掉)== > (1-1)
    第(i-1)行,i个元素
    第 i 行,(i+1)个元素(从 0~i 一共有(i+1)个元素)
    结果为:(1-1)+2+3+...+i+(i+1) = i*(i+1)/2+i
编辑于 2016-08-24 16:07:26 回复(10)
发表于 2017-03-30 18:48:37 回复(0)
我觉得这个题目没有陈述清楚吧,都说了是下三角,怎么还可能出现 j > i的呢?
发表于 2016-06-15 15:49:45 回复(3)
下三角矩阵,(假设行列都从1开始算下标)按行存储的话,第一行要存储1个元素(第一个),第二行要存储2个元素(前两个),第i行要存储i个元素(前i个)
则A[i][j]与 A[0][0]之间的元素个数等于前i-1行存储的元素个数加上第i行第j列之前的元素个数
前i-1行存储的元素个数=1+2+...+(i-1)=i*(i-1)/2个
第i行第j列之前的元素个数,如果j>=i,之间的元素个数为i,如果j<i,个数为j-1个
所以结果为
j<=i ? i*(i-1)/2 +j-1: i*(i+1)/2

编辑于 2015-01-31 10:38:42 回复(4)
一定要具体讨论i与j的大小关系呀,做题的严谨性

发表于 2016-04-26 22:17:48 回复(0)
这种题不想看,直接蒙…
发表于 2018-04-09 14:49:16 回复(0)
这题我也是醉了,还好有画图的,这尼玛坑爹啊,元素确实一直是下三角区域,注意是一直!!! 这也是i小于j的时候为什么第i行是+i的原因了,j-i根本没有元素
发表于 2017-10-09 20:32:13 回复(0)
对于 j >= i,对下三角矩阵只有一种情况,即 i = j,此时用 求和公式 (1+n)*n/2 即可,即为 `i*(i+1)/2+i`
对于 i >= j,可以计算 A[i-1][j] + j-1(最后一行),画图可以看出 A[i-1][j] 中,  i-1 == j,同样用求和公式即可
发表于 2019-07-30 13:43:05 回复(0)
这题出的并不好,既然上三角没有存储,就不应该问他们之间的元素个数。
发表于 2018-07-11 09:38:03 回复(0)
代入法最简单。A【1】【1】=1,A【2】【0】=2
发表于 2018-04-21 09:32:31 回复(0)
这题有两处很容易出错的地方:1.A[i][j]第i行有i+1个元素,计算行数连加是从0计算到i-1行,即1+2+...i再计算零头j,第j列有j+1个元素,即1+2+...+i+j+1。除去A[i][j], A[0][0]就是1+2+...+i+j+1-2.
2.当j>i时,只需计算到A[i][i];
发表于 2018-03-28 21:34:53 回复(0)
不是只有n^2个数吗,为什么存储空间用n(n+1)
发表于 2018-03-25 00:21:05 回复(0)
计算距离只考虑连续存储单元的数量。
因此当i<=j时,只需要考虑当前行对角线上元素到A[0,0]的距离。
发表于 2017-12-11 11:58:08 回复(0)
i和j的大小决定aij是处在上三角还是下三角的位置!所以计算不一样,注意啦
发表于 2017-09-05 10:43:54 回复(0)
编辑于 2017-05-14 20:54:11 回复(0)
正确答案不应该是 j<=i ? i*(i+1)/2 +j-1: j*(j+1)/2+i-1  吗?
编辑于 2016-07-30 17:47:55 回复(0)
发表于 2016-07-19 21:49:48 回复(1)
有意思
发表于 2016-05-20 15:43:41 回复(0)
这题到底怎么输入答案才对...
发表于 2016-05-19 22:56:21 回复(0)
我觉得答案有误啊,应该考虑的是常数还是非常数和A[0][0]之间的距离吧
发表于 2016-04-10 20:23:38 回复(0)
当j>i时为上三角元素,但是该矩阵是下三角矩阵,上三角元素全是零或者常数,应该是存储到最后的啊
发表于 2016-02-23 10:53:11 回复(0)