試看看用影片,看同學學習的效果是否比較好。 ... <看更多>
稀疏矩陣轉置 在 Popular_Algorithm/稀疏矩阵转置的数组实现.cpp - GitHub 的推薦與評價
数据结构课常见算法的C++实现. Contribute to elliottzheng/Popular_Algorithm development by creating an account on GitHub. ... <看更多>
稀疏矩陣轉置 在 算法(二):稀疏矩阵快速转置算法 - GitHub Pages 的推薦與評價
本文将阐述我是如何理解严蔚敏老师«数据结构»中的稀疏矩阵及其相关的三元组定义方式,以及与之相关的快速转置算法。 ... <看更多>
稀疏矩陣轉置 在 [問題] 急! MXN矩陣作轉置使用c或c++ - 看板C_and_CPP 的推薦與評價
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
c or c++
問題(Question):
example:
把5x5矩陣使用快速轉置矩陣演算法做轉換
餵入的資料(Input):
1 <--- 矩陣個數
5 <--- row個數
5 <--- col個數
0 0 4 0 1
0 1 0 3 0
0 0 0 0 2
2 3 0 1 0
5 0 4 0 0
預期的正確結果(Expected Output):
Sparse matrix:
row col value
0 5 5 10
1 0 3 4
2 0 4 1
3 1 1 1
4 1 3 3
5 2 4 2
6 3 0 2
7 3 1 3
8 3 3 1
9 4 0 5
10 4 2 4
--------------------------------
0 1 2 3 4
RowTerms 2 2 1 3 2
startingPos 1 3 5 6 9
-------------------------------
Transpose matrix:
row col value
0 5 5 10
1 0 3 2
2 0 4 5
3 1 1 1
4 1 3 3
5 2 4 4
6 3 0 4
7 3 1 3
8 3 3 1
9 4 0 1
10 4 2 2
----------------------------
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
快速轉置矩陣程式碼
void fast_transpose(term a[ ], term b[ ])
{
int row_terms[MAX_COL], starting_pos[MAX_COL];
int i, j, num_cols = a[0].col, num_terms = a[0].value;
b[0].row = num_cols; b[0].col = a[0].row;
b[0].value = num_terms;
if (num_terms > 0)
{
for (i = 0; i < num_cols; i++)
row_terms[i] = 0;
for (i = 1; i <= num_terms; i++)
row_term [a[i].col]++;
starting_pos[0] = 1;
for (i =1; i < num_cols; i++)
starting_pos[i]=starting_pos[i-1] +row_terms [i-1];
// cout << row_terms [i-1];
// cout << starting_pos[i]];
for (i=1; i <= num_terms, i++)
{
j = starting_pos[a[i].col];
b[j].row = a[i].col;
b[j].col = a[i].row;
b[j].value = a[i].value;
startingPos[a[i].col]++;
// cout << a[i].col << a[i].row << a[i].value;
}
}
}
補充說明(Supplement):
由於是大二作業,不得不交,已請教多位高手
仍無法獲得解決,懇請版上高手幫忙
現在方向要先定義資料結構,在讀5X5矩陣作轉換,題目改成只有5x5,就單純範例去跑就好
感覺難度有降低一點,不過卡在讀檔QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.237.163.36
※ 編輯: artorius 來自: 36.237.163.36 (10/21 00:09)
... <看更多>