我们称有许多值相同的元素或许多零元素,并且值相同的元素或零元素的分布有一定规律的矩阵为特殊矩阵。当矩阵的阶数比较大时,矩阵占据的内存空间相当多,这时,利用特殊矩阵元素的分布规律压缩矩阵的内存空间,对许多应用问题来说有重要的意义。特殊矩阵压缩存储的方法是,只存储特殊矩阵中数值不相同的元素。读取被压缩矩阵元素的方法是,利用特殊矩阵压缩存储的数学映射公式找到相应的矩阵元素。上三角矩阵就属于特殊矩阵。
(1)设矩阵A、矩阵B和矩阵C均为采用压缩存储方式的n阶上三角矩阵,矩阵元素均为int类型。
(2)编写实现矩阵加C=A+B的函数。
(3)编写矩阵元素显示函数。
(4)以下面的数据为测试例子,编写一个主函数进行测试。
1 2 3 10 20 30
A=0 4 5 B= 0 40 50
0 0 6 0 0 60
注意:数学中,矩阵元素aij的下标满足条件:1<=i<=n,1<=j<=n.如果下标从0开始,那映射公式不同。
void add(int a[], int b[], int c[],int n)
{//n阶上三角矩阵加法
int i;
for (i = 0; i < n * (n + 1) / 2 ; i++)
{
c[i] = a[i] + b[i];
}
}
void print(int c[], int n)
{//n阶上三角矩阵按矩阵方式输出,其中矩阵采用压缩存储方式
int i, j, k;
c[n * (n + 1) / 2] = 0;
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
{
if (i <= j)
k = (i - 1) * (2 * n - i + 2)/2 + (j - i);
else {
k = n * (n + 1) / 2;
}
printf("%3d ", c[k]);
}
printf("\n");
}
}
void main()
{
int a[] = { 1,2,3,4,5,6 }, b[] = { 10,20,30,40,50,60 }, c[7];
int n = 3;
add(a, b, c, n);
print(c, n);
}
运行结果: 文章来源:https://www.toymoban.com/news/detail-737002.html
11 22 33
0 44 55
0 0 66
文章来源地址https://www.toymoban.com/news/detail-737002.html
到了这里,关于上三角矩阵的压缩存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!