实现两个N*N矩阵的乘法,矩阵由一维数组表示
实现两个N*N矩阵的乘法,矩阵由一维数组表示。
先介绍一下矩阵的加法:
void Add(int rows, int cols)
{
for(int i= ;i<rows;i++)
{
for(int j=;j<cols;j++)
result[i][j]=mat1[i][j]+mat2[i][j];
}
}
若两个矩阵要做乘法运:只有在一个矩阵的行数与另一个矩阵的列数相同时,才能做两个矩阵的乘法。
如何得到矩阵的转置:
矩阵的转置也是一个矩阵,原始矩阵中的行转变为转置矩阵的列。例如,有下述一个3×3矩阵:
1 2 3
6 7 8
4 5 9
那么它的转置矩阵为:
1 6 4
2 7 5
3 8 9
让我们从程序员的角度仔细地考察一下这一现象。假设原始数组为M,转置矩阵为MT。那么M[1][0]=6,在转置矩阵中我们发现MT [0][1]=6。因此,我们能够得到程序化的结论:转置一个矩阵实际上就是对换下标变量。用技术术语讲:
- MT[Row][Column] = M[Column][Row];
下面是得到转置矩阵的C代码:
- void show_transpose(float mat[][10],int row,int col)
- {
- int i,j;
- for(i=0;i<row;i++)
- {
- for(j=0;j<col;j++)
- printf("%f\t",mat[j][i]);
- printf("\n");
- }
- }
这个方法显示了矩阵的转置。
- #include<iostream>
- using namespace std;
- #define size 2
- int multi(int *a , int *b , int N)
- {
- int i , j , k , temp;
- int *c = (int*)malloc(N * N);
- for(i = 0 ; i < N ; i++)
- {
- for(j = 0 ; j < N ; j++)
- {
- temp = i * N + j;
- *(c + temp) = 0;
- for(k = 0 ; k < N ; k++)
- {
- *(c + temp) += a[i * N + k] * b[k * N + j];
- }
- cout<<*(c + temp)<<" ";
- }
- }
- return *c;
- }
- int main()
- {
- int a[size * size] = {2 , 1 , 4 , 3};
- int b[size * size] = {1 , -1 , 3 , 2};
- multi(a , b , size);
- return 0;
- }
实现两个N*N矩阵的乘法,矩阵由一维数组表示的更多相关文章
- POJ1260 Pearls(dp,矩阵链乘法)
题目链接. 题目大意: 给定一个n,和两个序列a[i], p[i]. a[i] 表示需要购买 i品质 的数量,p[i] i 等级的价格. 1.每个品质都会有不同的价格,价格依据品质上升而上升 2.买一 ...
- Algorithm --> 矩阵链乘法
动态规划--矩阵链乘法 1.矩阵乘法 Note:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义.一个m×r的矩阵A左乘一个r×n的矩阵B,会得到一个m×n的矩阵C. #include ...
- CODEVS 3546 矩阵链乘法
http://codevs.cn/problem/3546/ 题目 给定有n个要相乘的矩阵构成的序列(链)<A1,A2,A3,.......,An>,要计算乘积A1A2.....An.一组 ...
- 矩阵乘法&&矩阵快速幂&&最基本的矩阵模型——斐波那契数列
矩阵,一个神奇又令人崩溃的东西,常常用来优化序列递推 在百度百科中,矩阵的定义: 在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合 ,最早来自于方程组的系数及常数所构成的方阵.这一 ...
- hdu 1757 A Simple Math Problem (乘法矩阵)
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- C语言 矩阵的转置及矩阵的乘法
C语言 矩阵的转置及矩阵的乘法 //凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1.矩阵的转置 #include<stdio.h> #defi ...
- 螺旋填数:读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右、下、左、上螺旋填入的结果。
package Day8_06; /*读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右.下.左.上螺旋填入的结果. * 例如读入数字4,5,则输出结果为: * 1 2 ...
- poj3233 题解 矩阵乘法 矩阵快速幂
题意:求S = A + A2 + A3 + … + Ak.(mod m) 这道题很明显可以用矩阵乘法,但是这道题的矩阵是分块矩阵, 分块矩阵概念如下:当一个矩阵A中的单位元素aij不是一个数值而是一个 ...
- MCM(矩阵链乘法)
这是<算法导论>动态规划中的一个问题.问题简述如下:我们在求解矩阵相乘时通常会有一个最优括号方案来对矩阵进行顺序相乘,这样会减少大量的计算时间. 我们知道矩阵A.B相乘,只能是当矩阵A的列 ...
随机推荐
- iOS 多线程下安全的使用定时器
iOS中timer相关的延时调用,常见的有NSObject中的performSelector:withObject:afterDelay:这个方法在调用的时候会设置当前runloop中timer,还有 ...
- http://www.myexception.cn/program/767123.html
http://www.myexception.cn/program/767123.html
- requirejs 优化压缩
1 配置node环境 2 配置built.js文档 3 执行命令node r.js -o built.js 文件目录: <!DOCTYPE HTML> <html lang=&quo ...
- HDU 4647 Another Graph Game 思路+贪心
官方题解: 若没有边权,则对点权从大到小排序即可.. 考虑边,将边权拆成两半加到它所关联的两个点的点权中即可. ..因为当两个人分别选择不同的点时,这一权值将互相抵消. #include <cs ...
- js获取项目根路径
//js获取项目根路径,如: http://localhost:8083/uimcardprj function getRootPath(){ //获取当前网址,如: http://localhost ...
- ISO 8601
ISO 8601 國際標準化組織的国际标准ISO 8601是日期和时间的表示方法,全称为<数据存储和交换形式·信息交换·日期和时间的表示方法>.目前是第三版ISO8601:2004以替代第 ...
- pyhton小方法
import osa = os.walk('.') for i in a: print(i)
- Newtonsoft.Json序列化和反序列之javascriptConvert.SerializeObject,DeserializeObject,JsonWriter,JsonReader
这里下载:http://www.newtonsoft.com/products/json/安装: 1.解压下载文件,得到Newtonsoft.Json.dll 2.在项目中添加引用.. jav ...
- phpcms上线步骤,无法生成缓存,页面空白原因
缓存目录没有设置成777. 1.修改数据库配置 2.修改数据表中的本地地址成线上地址 3.修改代码中的配置,本地地址批量改为线上地址 4.登录后台,更新缓存
- java.lang.ClassNotFoundException
在项目的properties中的Java Build Path里将Order and Export里的类库勾选上.