CCF 稀疏矩陣快速轉置

2021-10-06 00:00:45 字數 1270 閱讀 5777

ccf 10.稀疏矩陣快速轉置

【問題描述】

稀疏矩陣的儲存不宜用二維陣列儲存每個元素,那樣的話會浪費很多的儲存空間。所以可以使用乙個一維陣列儲存其中的非零元素。這個一維陣列的元素型別是乙個三元組,由非零元素在該稀疏矩陣中的位置(行號和列號對)以及該元組的值構成。而矩陣轉置就是將矩陣行和列上的元素對換。

請你實現乙個快速的對稀疏矩陣進行轉置的演算法。

【輸入形式】

輸入的第一行是兩個整數r和c(r<200, c<200, r*c <= 12500),分別表示乙個包含很多0的稀疏矩陣的行數和列數。接下來有r行,每行有c個整數,用空格隔開,表示這個稀疏矩陣的各個元素。

【輸出形式】

輸出為讀入的稀疏矩陣的轉置矩陣。輸出共有c行,每行有r個整數,每個整數後輸出乙個空格。請注意行尾輸出換行。

【樣例輸入】

6 70 12 9 0 0 0 0

0 0 0 0 0 0 0

-3 0 0 0 0 14 0

0 0 24 0 0 0 0

0 18 0 0 0 0 0

15 0 0 -7 0 0 0

【樣例輸出】

0 0 -3 0 0 15

12 0 0 0 18 0

9 0 0 24 0 0

0 0 0 0 0 -7

0 0 0 0 0 0

0 0 14 0 0 0

0 0 0 0 0 0

c++實現:

#include#includeusing namespace std;

#define maxsize 20000

int num[maxsize+1],cpot[maxsize+1];

typedef struct

triple;

typedef struct

tsmatrix;

tsmatrix fasttransposetsmatrix(tsmatrix a,tsmatrix b);

tsmatrix creatsmatrix(tsmatrix a);

tsmatrix creatsmatrix(tsmatrix a)

}return a;

}tsmatrix fasttransposetsmatrix(tsmatrix a,tsmatrix b)

} return b;

}int main()

else

cout<<"0 ";

}cout<}

return 0;

}

稀疏矩陣快速轉置

include include typedef structmatrix typedef int spmatrix 100 3 三元陣列別名 spmatrix a,b 建立兩個三元陣列,a為轉置前,b為轉置後 int pos 1000 num 1000 int getthree matrix s,i...

稀疏矩陣快速轉置

稀疏矩陣的儲存不宜用二維陣列儲存每個元素,那樣的話會浪費很多的儲存空間。所以可以使用乙個一維陣列儲存其中的非零元素。這個一維陣列的元素型別是乙個三元組,由非零元素在該稀疏矩陣中的位置 行號和列號對 以及該元組的值構成。而矩陣轉置就是將矩陣行和列上的元素對換。參考演算法5.1中的具體做法,令mu和nu...

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

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