有一个10阶对称矩阵A,采用压缩存储方式(以行序为主序存储,且元素A[0,0]地址为1)

有一个10阶对称矩阵A,采用压缩存储方式(以行序为主序存储,且元素A[0,0]地址为1),则元素A[8,5]的地址是 ()
这个怎么是42不是33吗

img

的运算结果() 。其中“[]”是函数的符号。

img


想知道这个(e,f)怎么出来的

该回答引用GPTᴼᴾᴱᴺᴬᴵ
对于一个10阶对称矩阵A采用压缩存储方式,每个元素的地址可以按以下方式计算:

  • 对于A[i,j],当i<=j时,其地址为A[i*(i+1)/2+j+1],因为对称矩阵只需存储一半的元素。
  • 对于A[i,j],当i>j时,其地址为A[j*(j+1)/2+i+1]。

因此,元素A[8,5]的地址为A[5*(5+1)/2+8+1],即A[32],而不是A[42]。

对于第二个问题,根据题目中的符号定义:

  • Head 返回列表的第一个元素。
  • Tail 返回列表中除了第一个元素之外的所有元素。
  • ((a. b). ((c))). (d). ((e. f)) 表示嵌套列表,可以看成是 ((a. b), ((c))), (d), ((e. f)) 的简写。

因此,先求出 (((a. b). ((c))). (d). ((e. f)) 的值:

  • Head [(((a. b). ((c))). (d). ((e. f)) )] 返回第一个元素 (((a. b). ((c)))))。
  • Tail [(((a. b). ((c))). (d). ((e. f)) )] 返回除第一个元素之外的元素,即 ((d). ((e. f)) )。
  • (((a. b). ((c))))) 也是嵌套列表,可以看成是 ((a. b), ((c))),其中 (a. b) 表示元素 a 和 b 组成的二元组,((c)) 表示元素 c 组成的列表。
  • (((d). ((e. f)) )) 也是嵌套列表,可以看成是 (d), ((e. f))。
  • 最终的嵌套列表为 ((a. b), ((c))), (d), ((e. f))。
  • Tail[((a. b), ((c))), (d), ((e. f))] 返回除第一个元素之外的元素,即 (((c))), (d), ((e. f)))。
  • Head[(((c))), (d), ((e. f)))] 返回第一个元素 ((c))。
  • Tail[(((c))), (d), ((e. f)))] 返回除第一个元素之外的元素,即 (d), ((e. f))。
  • ((c)) 是一个二元组,由元素 c 组成,因此答案为 (e,f)。

因此,(((a. b). ((c))). (d). ((e. f)) ) 的运算结果为 (e,f)。