2011-07-15 219 views
1

如何查看可以將上三角矩陣轉換爲完整矩陣的代碼。 矩陣是一個矢量,而不是在二維陣列...將上三角矩陣轉換爲完整矩陣C++

所以陣列

[ 1 2 3 4 
    0 5 6 7 
    0 0 8 9 
    0 0 0 10 ] 

會成爲像數組:

[ 1 2 3 4 
    2 5 6 7 
    3 6 8 9 
    4 7 9 10 ] 

你能提供一些想法,我正在考慮應用一種模塊或其他東西...

有一個限制,我沒有使用二維數組 我是一個矢量usng,所以是一個一維數組

+4

呃,寫兩個嵌套的for循環....?說真的,這不是很難。 –

+0

好吧,我正在使用一個向量,那會是什麼條件 – cMinor

回答

1

首先,您必須瞭解反射矩陣的fundemtnal本質。對於任何ij,以下說法是正確的:

m[i][j] ≡ m[j][i] 

所以,你需要一些算法,使真正的。我可以建議:

for(int i = 0; i < HEIGHT; ++i) 
    for(int j = 0; j < i; ++j) 
    m[i][j] = m[j][i]; 

請注意第二個循環的條件。通過確保j始終小於i,我們將活動限制在左下三角形。

接下來,您必須瞭解如何在一維數組中實現二維矩陣。看來,你已經建立了身份:

m[i][j] ≡ v[i*WIDTH+j] 

代,我們有:

for(int i = 0; i < HEIGHT; ++i) 
    for(int j = 0; j < i; ++j) 
    v[i*WIDTH+j] = v[j*WIDTH+i];