矩阵的乘法
2014-08-26 14:40
134 查看
#include<stdio.h> #include<stdlib.h> void Print(int **a,int m,int n) { int i,j; for(i=0;i<m;i++) { for(j=0;j<n;j++) printf("%d ",a[i][j]); printf("\n"); } } int**MatrixMultiply(int **a,int **b,int **c,int x,int m,int n) { int i,j,k; for(i=0;i<x;i++) for(j=0;j<n;j++) c[i][j]=0; for(i=0;i<x;i++) for(j=0;j<n;j++) for(k=0;k<m;k++) c[i][j]+=a[i][k]*b[k][j]; return c; } int main() { int **a,**b,**c; int x,y,m,n,i,j; printf("请输入第一个矩阵的行和列:"); scanf("%d %d",&x,&y); printf("请输入第二个矩阵的行和列:"); scanf("%d %d",&m,&n); while(y!=m) { printf("第一个的列和第二个的行不相等,请重新输入:"); scanf("%d %d",&m,&n); if(y==m) break; } a=(int**)malloc(sizeof(int*)*x); b=(int**)malloc(sizeof(int*)*m); c=(int**)malloc(sizeof(int*)*x); for(i=0;i<x;i++) a[i]=(int*)malloc(sizeof(int)*y); for(i=0;i<m;i++) b[i]=(int*)malloc(sizeof(int)*n); for(i=0;i<x;i++) c[i]=(int*)malloc(sizeof(int)*n); printf("请输入第一个矩阵\n"); while(scanf("%d",&a[0][0])!=EOF) { for(i=1;i<y;i++) scanf("%d",&a[0][i]); for(i=1;i<x;i++) for(j=0;j<y;j++) scanf("%d",&a[i][j]); printf("请输入第二个矩阵\n"); for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&b[i][j]); printf("相乘之后的结果为:\n"); Print(MatrixMultiply(a,b,c,x,m,n),x,n); } return 0; }
相关文章推荐
- 十个利用矩阵乘法解决的经典题目
- 矩阵分解之最小二乘法ALS
- 蓝桥杯-矩阵乘法
- 【wikioi】1250 Fibonacci数列(矩阵乘法)
- 【数据结构与算法】数组应用1:矩阵乘法(Java实现)
- SPOJ 1676 矩阵乘法+DP
- [POJ 3150] Cellular Automaton (矩阵高速幂 + 矩阵乘法优化)
- poj 3420 Quad Tiling 【矩阵乘法】
- 小结:矩阵乘法
- #100. 矩阵乘法
- ssoj2469叶落归根(矩阵乘法)
- 分治算法--矩阵乘法
- 矩阵的乘法
- MR实现--矩阵乘法
- 1287 矩阵乘法
- Codevs 3332 数列(矩阵乘法)
- 矩阵乘+高斯消元专题小结【矩阵乘法】
- BZOJ 2875: [Noi2012]随机数生成器【矩阵乘法优化递推
- 矩阵的乘法问题
- MPI多进程并行计算矩阵乘法实现