根據之前的文章strassen方法求矩陣乘法,我們只需要在使用strassen方法前對矩陣進行處理,對任意行列數的矩陣mxn,在最後一行或最後一列後面新增0,使行數和列數補齊為2的冪。
修改之前的**如下:
void matrixmultipy(int* a, int arow, int acol, int* b, int brow, int bcol, int* c)
int an = 1;
while (an < acol)
datatype* aa = new datatype[am*an];
memset(aa, 0, sizeof(datatype)*am*an);
submat a(aa, am, an);
for (int i = 0; i < arow; i++)
}int bm = 1;
while (bm < brow)
int bn = 1;
while (bn < bcol)
datatype* bb = new datatype[bm*bn];
memset(bb, 0, sizeof(datatype)*bm*bn);
submat b(bb, bm, bn);
for (int i = 0; i < brow; i++)
}datatype* cc = new datatype[am*bn];
memset(cc, 0, sizeof(datatype)*am*bn);
submat c(cc, am, bn);
matrixmultiplyab(a,b,c);
for (int i = 0; i < arow; i++)
}}
python3讀取csv檔案任意行列。
enumerate 函式用於將乙個可遍歷的資料物件 如列表 元組或字串 組合為乙個索引序列,同時列出資料和資料下標 filename d data.csv with open filename,r encoding utf 8 as f read f.readlines for index,info...
任意行列矩陣順時針螺旋輸出
比如5行6列的矩陣 要求輸出結果為 1,2,3,4,5,6,12,18,24,30,29,28,27,26,25,19,13,7,8,9,10,11,17,23,22,21,20,14,15,16 主要思路 寫乙個方法剝完外面一圈後,矩陣剩下的資料成為乙個新的矩陣,再次遞迴呼叫此方法,直到剝完 實現...
求行列式的值
肯定要用遞迴,肯定要用陣列 用乙個二維陣列來表示這個矩陣,但是引數傳遞的時候我們不能確定這個矩陣的行數列數,所以編譯器會報錯 所以定義乙個一維陣列來模擬這個行列式,而一維陣列作為引數傳遞給函式時又不用指定大小,符合我們的需要。同時我們定義乙個結構體來表示這個余子式 typedef struct yu...