2015-11-02 143 views
0

我對此非常感興趣,必須爲項目做到這一點,所以請牢記這一點。陣列對角線的總和

我需要編寫一個函數sumOfDiagonal,它有一個list類型的參數。

該列表是一個4x4的2維整數數組(4行4列整數)。

函數必須返回從右上角到左下角的對角線位置的整數之和。

我還沒有嘗試過任何東西,因爲我不知道從哪裏開始,所以將不勝感激一些指導。

+1

在什麼環境/語言? –

回答

2

由於您尚未指定語言(無論如何這可能是課堂作業),所以我必須提供僞代碼。給定4x4二維數組,基本思想是使用指定索引的循環,並使用該索引獲取維中的正確元素。假設我們有數組:

  [][0] [][1] [][2] [][3] 
      ----- ----- ----- ----- 
[0][]   1  2  3  4 
[1][]   5  6  7  8 
[2][]   9  10  11  12 
[3][]   13  14  15  16 

,我們想總結左上角到右下角的對角線(1+6+11+16(1)。這將是這樣的:

def sumOfDiagonal (arr, sz): 
    sum = 0 
    for i = 0 to sz - 1 inclusive: 
     sum = sum + arr[i][i] 
    return sum 

這是使用正常的方式訪問數組。如果可能給出的問題含糊不清,你的數組實際上是實際上是一些描述的列表(例如一個十六個元素的鏈表),你只需要調整你如何得到「數組」元素。

例如,一個16元素的列表需要獲得節點0,5,10和15,這樣您可以在每次累積後跳過四個節點的列表。

舉例來說,這裏做的左上到右下的變體,它輸出34 (1+6+11+16)一些Python代碼(2)預期:

def sumOfDiagonals(arr): 
    sum = 0 
    for i in range(len(arr)): 
     sum += arr[i][i] 
    return sum 

print(sumOfDiagonals([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])) 

( 1)要做左上角的右上角,只需要將第二個字段更改爲sz - i - 1


(2)的Python是理想僞代碼語言時,你要能夠測試您的僞代碼,只要你遠離它更復雜的邊角走:-)

+0

感謝它是python 3.完全忘記提及/ tag as python3 – lxarmx