我有麻煩做一個操作的算法,我想請求幫助。由於這是相當抽象的,這只是僞C#。算法來重新創建一個複雜的訂單
我有對象,這是在列表清單:
Object A
Object B
Object C
這份名單來自於一個存儲區,但用戶可以通過兩種方式在列表中創建新元素:複製一個對象或將兩個主題合併在一起。 因此,用戶交互後的名單可能是這樣的:
Object A
Object A1 - Clone of A
Object B
Object C
Object BC - Merge of B and C
每一個新的對象存儲,它的「父(S)」,所以它可能是追查每個對象的來源。 但有可能鏈複製並結合方式,使第三代可能是這樣的:
Object A
Object A1 - Clone of A
Object B
Object A1B - Merge of A1 and B
Object A1B2 - Cloe onf A1b
Object C
Object BC - Merge of B and C
Object BC2 - Clone of BC
現在我堅持:有時候,這個名單必須從存儲例1中regenarated雖然很容易重新創建「簡單」的複製或合併對象,我無法想出一個好的算法來識別順序,在哪個組合中必須重新創建。 查看迭代3:要重新創建A1B2,我必須首先克隆A1,然後將A1和B合併到A1B,然後克隆此對象。 是否有某種算法可以確定必要的順序?
'ABC',它是'A + BC'還是'AB + C'?你如何區分'A(B1)'和'(AB)1'之間的AB1? –
可能是一個:(取決於用戶的選擇 我存儲信息的immidiate帕內,所以美國廣播公司將知道它的父母 –
如果你知道父母,是不是這是一個簡單的情況遞歸地看着父母,然後扭轉秩序? –