2017-09-01 22 views
0

我有一個非常常見的問題,我討厭通過編寫所有可能的組合來解決這個問題,所以最好的方法是什麼? 例如: x = [[[['0','0','1'],['0','0','0'],['1','1','0'] ],[['0','0','1'],['0','0','0'],['1','1','0']],[['0 '','0','1'],['0','0','0'],['1','1','0']]]檢查多維數組的所有合作伙伴的最佳方法是什麼?

so x [i] [ j] [k]都可以被訪問等。比方說,我想找到x [1] [1] [1]的合作伙伴,這樣做的最好方法是什麼?

回答

0

你的問題很枯燥,並解釋你到底想要達到什麼以及遇到什麼錯誤/問題。此外,它看起來並不像你在研究這個話題上做出任何努力,就像你說的「真正的常見問題」。

假設「夥伴」意味着鄰居/鄰接元素,您可以執行以下操作: 讓我們以二維數組爲例,頂部和側面的數字代表行和列,' - '和' X'是數組中的值。

0 1 2 3 
0 - X - X 
1 - - X X 
2 X X - X 
3 - - - - 

假設您想要在數組中找到相鄰地址爲arr [1] [1] =' - '。 您只需檢查,如果您在行或列中添加或減少一個佈局,它是否會溢出數組(例如:第2行是否存在於數組中,如果是,那麼它的鄰居是arr [2] [1])。你將不得不通過爲每個行/列(/另一個維度)增加和減少的值要做到這一點:

arr[1][0] 
arr[1][2] 
arr[0][1] 
arr[2][1] 

他們都在數組中存在,它的行寬0-3和它的列0-3。

紅利:如果您想查找相鄰元素的值,您只需要顯示現有相鄰元素的值(調用arr [1] [0])。

在互聯網上還有很多更多的方法和技巧,尤其是堆棧溢出。檢查這個鏈接,可能會給你一些想法:2d array, all values are adjacent

+0

對不起,我明白這個解決方案,因爲它每次看到我看到這個。我希望有更好的方法來做到這一點,而不是把所有的價值都放在一個完整的索引+ 1的想法中。 –

+0

如果您正在多次執行此操作,您可以創建一個函數,甚至可以使用不同大小的數組掃描不同類型的事物的類。 – BreakTime

相關問題