讓我們假設你得到下面的數組:檢測在二維數組模式的閉環
foo = [
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,1,1,1,1,1,0,0],
[0,0,0,1,0,0,0,1,0,0],
[0,0,0,1,0,0,0,1,0,0],
[0,0,0,1,1,1,0,1,0,0],
[0,0,0,0,0,1,0,1,0,0],
[0,0,0,0,0,1,1,1,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
]
我如何確定'1'的模式是閉環?我已經掙扎了幾天。我已經嘗試了遞歸循環找鄰居和文字,但是當你有一個更復雜的模式將無法正常工作,例如:
foo = [
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,1,1,1,0,0,0,0],
[0,0,0,1,0,1,0,0,0,0],
[0,0,0,1,0,1,0,0,0,0],
[0,0,0,1,1,1,1,1,0,0],
[0,0,0,0,0,1,0,0,0,0],
[0,0,0,0,0,1,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
]
難道有人有一個神奇的算法來解決這個問題? :(
你可能想實現'Dijkstra的算法性能thm'並遍歷數組作爲節點。然後測試以確定您是否已返回到您的起始位置。 – Zze
對不起,你是否希望第二個例子算作閉環?此外,你需要循環內的零點還是四捨五入的方塊數? – user1675642
在這種情況下,我可以看到「Flood Fill」算法正常工作,就像在桶中填充繪畫程序一樣。如果「填充」0的區域並且不溢出陣列的邊緣,則必須關閉該區域。你將不得不嘗試每個單獨的0區域。 – lhoworko