資料壓縮是提高傳輸、儲存效率一種技術。教材第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...