看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《moon2519 (~輝~)》之銘言: : #include <cstdlib> : #include <iostream> : using namespace std; : int main(int argc, char *argv[]) : { : int matA[3][3] = { {1,0,3}, : {0,1,4}, : {5,0,1} }; : int matB[3][3] = { {1,0,0}, : {0,1,0}, : {0,0,1} }; : for(int i=1; i<=3 ;i++){ //執行for迴圈用於控制i列 : for(int j=1; j<=3 ;j++){ //執行for迴圈用於控制j行 : matA[i][j]=matA[i][j]*matB[j][i]; //矩陣相乘 : cout<<matA[i][j]; //印出值 : } : cout<<endl; : } : system("PAUSE"); : return EXIT_SUCCESS; : } 如果可以開一個 row 的記憶體的話 可以這樣做: for (size_t r = 0; r < 3; ++r) { int row[3] = {0}; for (size_t c = 0; c < 3; ++c) for (size_t k = 0; k < 3; ++k) row[c] += matA[r][k] * matB[k][c]; for (size_t c = 0; c < 3; ++c) matA[r][c] = row[c]; } 不過如果連那個 row 都不能開的話 我就不知道怎麼做了 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.49
MOONRAKER:記憶體使用O(0)的演算法,這老師太狠了!!! 11/11 14:35