设有
对称矩阵A[n][n],将其上三角元素逐行存于数组B[0..m-1]中,使得B[k]=a[i,j]且
k=f1(i)+f2(j)+c。试推导出函数f1,f2和常数c。
【解答】
上三角矩阵第一行(下标为i=0)有n个元素,下标i-1行有n-(i-1)个元素,第一行(下标i=0)到下标i-1行是梯形,而第i行第j列的元素(即aij)是第i行上第j-i+1个元素,故元素Aij在一维数组中的存储位置(下标k)为:
k=(n+(n-(i-1)))i/2+(j-i+1)=(2n-i+1)i/2+j-i+1 将上面的等式进一步整理为: k=(n-1/2)i-i2/2+j+1,
则得f1(i)=(n-1/2)i-i2/2,f2(j)=j,c=1。