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

C/C++实现上 下三角矩阵的压缩存储

时间:2021-10-04 10:33:10

相关推荐

C/C++实现上 下三角矩阵的压缩存储

存储思路

上、下三角的压缩存储和对称矩阵的压缩存储(上三角部分、下三角部分)类似,不过是多了一个常数要存储。

对称矩阵的压缩存储

代码

#include <iostream>using namespace std;int main(){int n;printf("请输入下三角矩阵的维数:");scanf("%d",&n);int arr[n+1][n+1];printf("请输入下三角矩阵:\n");for(int i=1;i<n+1;i++){for(int j=1;j<n+1;j++){scanf("%d",&arr[i][j]);}}//存储下三角矩阵,多一位存储上三角区元素 int a[n*(n+1)/2+1];for(int i=1;i<n+1;i++){for(int j=1;j<=i;j++){a[i*(i-1)/2+j-1]=arr[i][j];}}a[n*(n+1)/2]=arr[1][2];for(int i=0;i<n*(n+1)/2+1;i++){printf("%d ",a[i]);}printf("\n------------------\n");int m;printf("请输入上三角矩阵的维数:");scanf("%d",&m);int arr2[m+1][m+1];printf("请输入上三角矩阵:\n");for(int i=1;i<m+1;i++){for(int j=1;j<m+1;j++){scanf("%d",&arr2[i][j]);}}//存储下三角矩阵,多一位存储上三角区元素 int a2[m*(m+1)/2+1];for(int i=1;i<m+1;i++){for(int j=i;j<m+1;j++){a2[(i-1)*(2*m-i+2)/2+(j-i)]=arr2[i][j];}}a2[m*(m+1)/2]=arr2[2][1];for(int i=0;i<m*(m+1)/2+1;i++){printf("%d ",a2[i]);}return 0;}

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