900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 上三角矩阵的压缩存储

上三角矩阵的压缩存储

时间:2018-11-21 16:37:05

相关推荐

上三角矩阵的压缩存储

我们称有许多值相同的元素或许多零元素,并且值相同的元素或零元素的分布有一定规律的矩阵为特殊矩阵。当矩阵的阶数比较大时,矩阵占据的内存空间相当多,这时,利用特殊矩阵元素的分布规律压缩矩阵的内存空间,对许多应用问题来说有重要的意义。特殊矩阵压缩存储的方法是,只存储特殊矩阵中数值不相同的元素。读取被压缩矩阵元素的方法是,利用特殊矩阵压缩存储的数学映射公式找到相应的矩阵元素。上三角矩阵就属于特殊矩阵。

(1)设矩阵A、矩阵B和矩阵C均为采用压缩存储方式的n阶上三角矩阵,矩阵元素均为int类型。

(2)编写实现矩阵加C=A+B的函数。

(3)编写矩阵元素显示函数。

(4)以下面的数据为测试例子,编写一个主函数进行测试。

1 2 3 10 20 30

A=0 4 5B= 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);}​

运行结果:

11 22 33

0 44 55

0 0 66

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。