上三角矩阵的压缩存储

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

(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);
}

​

运行结果: 

11  22  33
  0  44  55
  0   0  66
 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值