十四 矩陣的快速轉置演算法

2021-10-10 02:21:42 字數 1865 閱讀 1190

資料壓縮是提高傳輸、儲存效率一種技術。教材第5章介紹了兩種簡單的壓縮儲存方法。本實驗要求實現三元組順序表表示下的矩陣快速轉置演算法。

輸入:

稀疏矩陣的行數、列數、非零元個數(三個數都大於0)

以行為主序輸入稀疏矩陣三元組表

輸出:

​ 輔助陣列num[ ]

​ 輔助陣列cpot[ ]

以行為主序輸出對應的轉置矩陣三元組表

測試輸入

期待的輸出

時間限制

記憶體限制

額外程序

測試用例 1

6 7 8

1 2 12

1 3 9

3 1 -3

3 6 14

4 3 24

5 2 18

6 1 15

6 4 -7

num:2,2,2,1,0,1,0,

cpot:1,3,5,7,8,8,9,

1,3,-3

1,6,15

2,1,12

2,5,18

3,1,9

3,4,24

4,6,-7

6,3,14

1秒256kb

0測試用例 2

5 4 6

2 1 1

2 2 2

4 2 2

4 3 3

5 3 3

5 4 4

num:1,2,2,1,

cpot:1,2,4,6,

1,2,1

2,2,2

2,4,2

3,4,3

3,5,3

4,5,4

1秒64m

0稀疏矩陣的快速轉置演算法在教材(紫皮書)上已經有了很詳細的介紹,我們只需要按照方法一步一步復現出來就好了。

//定義三元組

typedef struct

triple;

//定義稀疏矩陣

typedef struct

tsmatrix;

//兩個輔助陣列

int num[1010] = , cpot[1010] = ;

int main()

/* 快速轉置演算法 */

t.nu = m.mu;

t.mu = m.nu;

t.tu = m.tu;

if (t.tu) }

//輸出輔助陣列

cout << "num:";

for (int i = 1; i <= m.nu; i++)

cout << num[i] << ",";

cout << endl;

cout << "cpot:";

for (int i = 0; i < m.nu; i++)

cout << cpot[i] << ",";

cout << endl;

//輸出轉置矩陣三元組表

for (int i = 1; i <= m.tu; i++)

cout << t.data[i].i << "," << t.data[i].j << "," << t.data[i].e << endl;

return 0;

}

矩陣的快速轉置演算法

解答補充 資料壓縮是提高傳輸 儲存效率一種技術。本實驗要求實現三元組順序表表示下的矩陣快速轉置演算法。稀疏矩陣的行數 列數 非零元個數 三個數都大於0 以行為主序輸入稀疏矩陣三元組表 輔助陣列num 輔助陣列cpot 以行為主序輸出對應的轉置矩陣三元組表 6 7 8 1 2 12 1 3 9 3 1...

稀疏矩陣的轉置(矩陣轉置和快速轉置)

實現矩陣的轉置 1.將矩陣的行列值相互轉換。2.將每個三元組中的i和j交換。3.重排三元組之間的次序便可實現矩陣的轉置。void transposesmatrix tsmatrix m,tsmatrix t return transposesmatrix快速轉置的原理是 如果能預先確定矩陣m中每一列...

矩陣的快速轉置

include include define ok 1 define error 0 define overflow 0 typedef int elemtype typedef int status typedef struct triple 三元組 typedef struct tsmatrix...