我正在嘗試將不同大小的矩陣相乘。通常,如果矩陣的大小相同,您會使用 2 個 for 回圈,但是大小不同的矩陣呢?
int main(int argc, char const *argv[]) {
int mat1[2][3] ={{1,2,3},
{4,5,6},
};
int mat2[3][2] = {{1,2},
{3,4},
{6,5}
};
int *pointerToMat1 = &mat1[0][0];
int *pointerToMat2 = &mat2[0][0];
return 0;
}
我正在考慮使用指標,但我迷路了。上面的例子只是為了測驗函式,一般來說 matrixProduct 應該適用于任何大小的矩陣,只要數學規則成立。
uj5u.com熱心網友回復:
好吧..矩陣乘法的公式非常簡單:
Multiplying A(MxN) and B(NxM) gives C(MxM):
C[i,j] = sum ( A[i,k]*B[k,j] k = 0..N ) ; i,j=0..M
所以用你的代碼我會做:
#include <stdio.h>
int main()
{
int mat1[2][3] ={{1,2,3},
{4,5,6},
};
int mat2[3][2] = {{1,2},
{3,4},
{6,5}
};
int *pointerToMat1 = &mat1[0][0];
int *pointerToMat2 = &mat2[0][0];
int C[2][2];
for ( int i=0; i<2; i ) {
for( int j=0;j<2;j ) {
C[i][j] = 0;
for( int k=0;k<3;k ) {
printf("%dx%d=%d\n",mat1[i][k],mat2[k][j],mat1[i][k]*mat2[k][j]);
C[i][j] = mat1[i][k]*mat2[k][j];
}
}
}
printf("%d %d %d %d",C[0][0],C[0][1],C[1][0],C[1][1]);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/532301.html
標籤:数组C指针矩阵
下一篇:不使用遞回復制鏈表
