当前位置: 首页 > news >正文

c语言把两个对称矩阵存为一维数组,再求出两个对称矩阵的乘积

c语言把两个对称矩阵存为一维数组,再求出两个对称矩阵的乘积

对称矩阵为了节省存储空间,有时候会把它存为一维数组。如果存为一维数组怎么求出他们的乘积呢?

//对称矩阵,使用下三角存储为一维数组,然后两个对称矩阵相乘, (下三角存储的意思是矩阵主对称线下面的元素)
//写出实现
//疑问,对称矩阵和对称矩阵相乘,还是对称矩阵吗,怎么存储.(答可能不是对称矩阵,按照二维数组存储)
#include <stdio.h>//例子,要处理3行3列的对称矩阵
#define ROWS 3
#define COLS 3
//对称矩阵如果要存储为一维数组,一共占多大空间
#define LEN (ROWS * (ROWS + 1) / 2)//获得对称矩阵元素的值
int getArrayVal(int tmp[], int m, int n){int index;if(m>=n){index = (m*(m+1) / 2) + n;}else{index = (n*(n+1) / 2 )+ m;  }return tmp[index];
}//矩阵计算的结果
//存储a矩阵的,一维数组a[]
//存储b矩阵的,一维数组b[]
//i , j 结果矩阵的某个点
int slc(int a[], int b[], int m, int n){int tmp = 0;for (int i = 0; i < ROWS; i++)//tmp += a[m][i] * b[i][n];tmp += getArrayVal(a,m,i)* getArrayVal(b,i,n); //获取对称矩阵(一维数组),某行某列的值,再相乘return tmp;
}int main(){int i,j; //对称数组的长度为//int lenght = (ROWS * (ROWS + 1) / 2);printf("%d \n",LEN);//  对称矩阵a//  1 2 3//  2 4 5//  3 5 1//  对称矩阵b//  4 6 7//  6 9 8//  7 8 4  //这样的对称矩阵,存储只存储下半部,并且保存再一维数组里面int a[LEN] = {1,2,4,3,5,1}; int b[LEN] = {4,6,9,7,8,4};int c[ROWS][COLS];for(i=0;i<ROWS;i++)for (j = 0; j < COLS; j++)c[i][j] = slc(a,b,i,j);//输出数组for(i=0;i<ROWS;i++)for (j = 0; j < COLS; j++){printf("%d \t",c[i][j]);if(j==COLS-1) printf("\n");}return 0;
}

 

http://www.sczhlp.com/news/13228/

相关文章:

  • 使用KRaft部署单点kafka集群
  • LOJ6076 做题记录 - 邻补角
  • 自动布局
  • 浅谈拉格朗日插值
  • 5.3 绝对路径和相对路径
  • WrenAI部署,解决发送消息报错:failed to create asking task
  • ORM在企业级项目中的应用
  • 记录一个神秘做法
  • 单元测试三大神器:unittest vs JUnit vs Jest 终极对决
  • 数据点配置工具使用教程
  • 怎么马上上大学了
  • 深入解析:Java集合类综合练习题
  • 爬虫入门
  • 关键词提取实战指南:方法选择与应用注意事项解析
  • 软件测试基础知识 + 面试理论(超详细)
  • 在AI技术快速落地的时代,挖掘创意工具的新需求成为关键——某知名Adobe插件框架需求分析
  • day22
  • ESP32-S3 控制 BMP280气压传感器
  • OI 如何配置 Visual Studio Code
  • ESP32-S3 控制 传感器模块
  • ESP32-S3 控制 红外寻迹模块
  • ESP32-S3 控制 红外避障模块
  • ESP32-S3 控制 MPU6050模块
  • 全局二叉平衡树
  • ESP32-S3 控制 触摸开关传感器
  • ESP32-S3 控制 旋转编码器实验
  • ESP32-S3 控制 PS2传感器模块
  • godot shader 等高线的绘制 和 模型描边的绘制 和 shader 常用算法
  • 2025.8计算几何做题记录
  • 深入解析:把“距离过近”的节点(或端点)合并成一个,避免重复。机器学习 python