C语言—用malloc函数实现任意阶矩阵的乘法

Strassen的矩阵乘法算法虽然时间复杂度为Θ(n^lg7),比Θ(n^3)小,但是常数项很大,在实际应用中不多见。

When the matrices are sparse, methods tailored for sparse matrices are faster.

下面呈现的算法是最普通的Θ(n^3)

#include
#include/*malloc函数的函数头,如果这个函数头不行,可以试试malloc.h*/
int main(void)
{
 int m,g,n;
 int i,j,k;
 printf("请输入第一个矩阵的行数和列数:\n");
 scanf("%d%d",&m,&g);
    printf("请输入第二个矩阵的列数(该矩阵行数等于第一个矩阵的列数):\n");
 scanf("%d",&n);
 double **a=NULL;/*二级指针用来代表一个二维数组,在声明指针的时候将其赋值为NULL;释放后再赋值为NULL在一些进行有效性判断的地方用a==NULL来判断指针是否为空指针*/
 a=(double**)malloc(m*sizeof(double*));/*这句是动态定义二维数组的行数。新的标准ANSI C规定malloc函数的返回值类型为void型,所以需要强制转化为double型的指针后才能赋给a。*/
 for(i=0;i


你可能感兴趣的:(算法&数据结构,学习笔记)