2. 矩陣的快速轉置演算法
阿新 • • 發佈:2018-12-18
2. 矩陣的快速轉置演算法
成績 | 10 | 開啟時間 | 2018年10月28日 星期日 18:00 |
折扣 | 0.8 | 折扣時間 | 2018年11月18日 星期日 23:55 |
允許遲交 | 否 | 關閉時間 | 2018年11月28日 星期三 23:55 |
矩陣的快速轉置演算法
資料壓縮是提高傳輸、儲存效率一種技術。教材第5章介紹了兩種簡單的壓縮儲存方法。本實驗要求實現三元組順序表表示下的矩陣快速轉置演算法。
輸入:
稀疏矩陣的行數、列數、非零元個數(三個數都大於0)
以行為主序輸入稀疏矩陣三元組表
輸出:
輔助陣列num[ ]
輔助陣列cpot[ ]
以行為主序輸出對應的轉置矩陣三元組表
#include "stdio.h" #include "stdlib.h" typedef struct Node{ int x; int y; int data; }NODE; int main(){ int row, col, n, x, y , data; scanf("%d %d %d",&row,&col,&n); NODE matrix[n+1]; for(int i = 1; i <= n; i++){ scanf("%d%d%d",&x,&y,&data); matrix[i].x = x; matrix[i].y = y; matrix[i].data = data; } NODE tmatrix[n+1]; int num[col+1]; for(int i = 1; i <= col; i++) num[i] = 0; for(int i = 1; i <= n; i++){ num[matrix[i].y]++; } int cpot[col+1]; cpot[1] = 1; for(int i = 2; i <= col; i++){ cpot[i] = cpot[i-1]+num[i-1]; } printf("num:"); for(int i = 1; i <= col; i++) printf("%d,",num[i]); printf("\n"); printf("cpot:"); for(int i = 1; i <= col; i++) printf("%d,",cpot[i]); printf("\n"); int count = 1, flag; for(int i = 1; i <= n; i++){ flag = matrix[i].y; tmatrix[cpot[flag]].x = matrix[i].y; tmatrix[cpot[flag]].y = matrix[i].x; tmatrix[cpot[flag]].data = matrix[i].data; cpot[flag]++; } for(int i = 1; i <= n; i++){ printf("%d,%d,%d\n",tmatrix[i].x,tmatrix[i].y,tmatrix[i].data); } }