【暴力】
int** get_matrix(int n) {
int** c;
c = (int**)malloc(sizeof(int*) * n);//为二维数组分配n行
for (int i = 0; i < n; ++i) {//为每列分配n个空间
c[i] = (int*)malloc(sizeof(int) * n);
}
return c;
}
//暴力相乘
int** square_matrix_multiply(int** a, int**b, int n) {
int** c = get_matrix(n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int sum = 0;
for (int k = 0; k < n; k++) {
sum += a[i][k] * b[k][j];
}
c[i][j] = sum;
}
}
return c;
}
【分治】
利用矩阵分块的思想
时间复杂度仍为O(n^3)
partition可以直接用四个矩阵复制,也可以带上行列起始和结尾坐标去递归,即使用下标计算。若n不是偶数,