数据结构中对称矩阵三角元素的下标

  1. ()方法可以判断出一个有向图中是否有环(回路)。
    (A)深度优先遍历 (B)拓扑排序
    (C)求最短路径 (D)求关键路径
    A和B选项都可以的吧
    2.对于C语言的二维数组DataType A[m][n],每个数据元素占K个存储单元,二维数组中任意元素a[i,j] 的存储位置可由( )式确定.
    A.Loc[i,j]=A[m,n]+[(n+1)*i+j]*k
    B.Loc[i,j]=loc[0,0]+[(m+n)*i+j]*k
    C.Loc[i,j]=loc[0,0]+[(n+1)*i+j]*k
    D.Loc[i,j]=[(n+1)*i+j]*k
  2. A[N,N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是( )。
    A. i(i-1)/2+j B. j(j-1)/2+i C. i(j-i)/2+1 D. j(i-1)/2+1
  3. 用一维数组B与列优先存放带状矩阵A中的非零元素A[i,j] (1≤i≤n,i-2≤j≤i+2),B中的第8个元素是A 中的第()行,第()列的元素。

第一题选择a
第二题选择c

该回答引用GPTᴼᴾᴱᴺᴬᴵ

  1. (B)拓扑排序可以判断有向图中是否有环。深度优先遍历可以用来遍历整张图,但需要在遍历过程中判断是否存在反向边,才能判断是否有环。

  2. 答案为C。对于一个二维数组A[m][n],存储位置可由Loc[i,j]=loc[0,0]+[n*i+j]*k确定。因此,Loc[i,j]=loc[0,0]+[(n+1)*i+j]*k。

  3. 对于下标为(i,j)的上三角元素,其行号为i,列号为j,且满足i<=j。因此,下标k的计算公式为k=(i-1)n - (i-2)(i-1)/2 + j - i。将i<=j带入化简可得k=j*(j-1)/2+i-1。

  4. 由于带状矩阵A的每一行中最多只有五个非零元素,因此B中的第8个元素一定对应着A中的第3行或第4行。具体的行列号需要根据带宽以及偏移量进行计算。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^