朴素法实现矩阵乘法
2015-11-11 16:26
274 查看
/***************************************************************************************** 普通法实现矩阵乘法:时间复杂度为O(n的3次方) 输入: 2 2 1 2 2 3 2 3 1 3 2 3 2 1 输出: 2 3 7 7 4 11 12 7 说明:其中第一行代表矩阵的行数和列数,之后是矩阵中的各个元素,按行输入和输出。 ********************************************************************************************/ #include <cstdio> #include <cstring> int main() { int cow,column,Ccow,Ccolumn; int flag=0; int **A,**B; while(scanf("%d%d",&cow,&column)==2) { if(flag==0) { Ccow=cow; A=new int*[cow];//一维指针数组(注意这里写成int **A=new (int*)[cow])会报错 for(int i=0;i<cow;i++) A[i]=new int[column];//一维指针数组中的每一个指针指向一个一维数组 flag=1; for(int i=0;i<cow;i++) for(int j=0;j<column;j++) scanf("%d",&A[i][j]); } else { Ccolumn=column; B=new int*[cow];//一维指针数组 for(int i=0;i<cow;i++) B[i]=new int[column];//一维指针数组中的每一个指针指向一个一维数组 //B中元素赋值 for(int i=0;i<cow;i++) for(int j=0;j<column;j++) scanf("%d",&B[i][j]); //由A和B计算中C中元素 int C[Ccow][Ccolumn]; memset(C,0,sizeof(C)); /*************核心算法******************************************/ for(int i=0;i<Ccow;i++) for(int j=0;j<Ccolumn;j++) for(int k=0;k<cow;k++)//k指的是A中的列数或B中的行数 { C[i][j]=C[i][j]+A[i][k]*B[k][j]; } /***************************************************************/ //输出C中元素 printf("%d %d\n",Ccow,Ccolumn); for(int i=0;i<Ccow;i++) { for(int j=0;j<Ccolumn;j++) printf("%d ",C[i][j]); printf("\n"); } //释放申请的空间 //for(int i=0;i<cow;i++) // delete []A[i]; //delete []A; } } return 0; }
相关文章推荐
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数
- 在C语言中转换时间的基本方法介绍