[英]Data Structure in C++
我正在研究一個問題,並在C ++中實現算法。 該算法需要一個類似於2D數組(例如20x20數組)的數據結構。 主要區別在於每個單元必須連接到它周圍的八個近鄰(即上,下,左,右和四個角)。
每個成員的狀態將根據鄰居的數據變化而變化。 因此,每個單元都動態增長。 每個單元都需要不斷檢查其所有鄰居的數據。
基於這一要求,我可以想象這種數據結構是圓形的,就像一個圓環或百吉餅一樣,沒有邊緣,因此每個單元相互連接。
關於這種數據結構的表示有什么想法嗎? 我正在考慮使用鄰接鏈表圖,其中每個成員都包含周圍八個鄰居的鏈表。 你怎么看? 我在正確的軌道上嗎?
尋找生命游戲的實現,該實現使用零和一。 除非您通過將解決方案收斂到每次迭代的一組約束條件來做非常復雜的事情,否則您每次都將遍歷數組,引用最后一個完整的代,並在每次循環結束時更新所有內容以創建新一代。
通常,這取決於您的問題,但是我對鄰接鏈表有疑問。 如果您的鄰居動態增長,那將更合適,但在這種情況下,他們似乎是固定的。 因此,您也可以只使用一個指向鄰居的數組。
問題陳述似乎不太清楚:
每個成員的狀態將根據鄰居的數據變化而變化。 因此,每個單元都動態增長。 每個單元都需要不斷檢查其所有鄰居的數據。
這到底是什么意思? 假設只有一個值更改。 然后,所有鄰居都應該更改,並且所有鄰居都再次更改,直到所有值都已更改。 但是原始值又如何呢?在更改之后,它的鄰居更改了,它是否應該再次更改以作為響應(並無限期地更改-聽起來像個壞主意)?
怎么辦:我們有一個簡單的1x4 2D數組ABCD
案例,其中A是B和D的鄰居,A是C和C的鄰居,等等。
說出變化。 B和D也應該如此。現在,C應該改變-它是否應該同時基於B和D的改變而改變? 還是B第一,D第二? 要不然是啥?
constantly
dynamically
解決您的問題的意義/定義是什么? 是否有時間步驟,例如
time 1: a cell changes
time 2: all immediate neighbours change simultaneously
time 3: neighbours of immediate neighbours change
(and what about the original cell at this point?)
time 4: etc.
在大多數情況下,我會(與其他大多數情況一樣)建議一種基於2D數組的結構,但使用setter方法,該方法在調用時會原子地更改傳播。 但這確實取決於您constantly
dynamically
定義
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.