2015-12-06 49 views
-1

讓我們假設我有一個方形矩陣(例如4×4):矩陣存儲在一個std :: vector的

a_00 a_01 a_02 a_03 
a_10 a_11 a_12 a_13 
a_20 a_21 a_22 a_23 
a_30 a_31 a_32 a_33 

並承擔我保存這個矩陣在C++的std ::矢量V,不上的條目主對角線(a_ij其中i = j)的:

v = {a_01, a_02, a_03, a_10, a_12, a_13, a_20, a_21, a_23, a_30, a_31, a_32} 

如何可以寫一個C++函數int idx(int i, int j)返回在向量v的條目a_ij的索引?

+0

請告訴我們你到目前爲止所嘗試的。 – Kiloreux

+0

我還沒有找到解決方案! – user3061631

+0

然後請嘗試一下,這樣的人可以幫助你知道你付出了努力。 – Kiloreux

回答

0

包括

using namespace std; 

int main() 
{ 
    int i, j, n; 
    cin >> n >> i >> j; 
    int ans = i * n + j - i; 
    if (j > i) 
     ans--; 
    cout << ans << endl; 
    return 0; 
} 

我這樣做。我實際上認爲我們有主對角線來解決問題。那麼答案就是i * n + j。很明顯,在每一行中,主對角線上只有一個條目,所以我們減去第i行之前的行數,即i。

現在我們必須使用if語句來查看第i行的主對角線上的條目是否在第j個元素之前或之後。真的很簡單。

希望它有幫助!

0

對於初學者,而不是i * n_cols + j,您只需乘以(n_cols-1) - 因爲您在每行中缺少一個項目。此外,您還需要調整j(基本上:if (j > i) --j)。並返回錯誤,如果我== j。

相關問題