我們給出了兩個導向序列,查找的步驟的最小數目的順序改變爲另一個
例如(+A-) (-B+) (+C-) (-D+) (+E-) and (+B-) (+C-) (-D+) (+E-) (+A-)
。
注意(+A-)
表示一個定向的子序列,其中'+'
表示子序列的頭部,而'-'
表示尾部。如果'1234'
是(+A-)
,然後'4321'
是(-A+)
,這是(+A-).
背面的目標是找到最少的步驟數變更序列到另一個反向的唯一操作。
例如,我們需要反轉一次更改(+A-)(+B-) to (-B+)(-A+).
我們需要扭轉兩次改變(+A-) (+B-) (+C-) to (-A+) (+B-) (-C+).
的以下步驟中的第一給定兩個序列之間進行操作的最小數量是3。這裏是這樣做的一種方法:
步驟0(+ A - )(-B +)(+ C-)(-D +)(+ E-)
步驟1。 (+ B-)(-A +)(+ C-)(-D +)(+ E-)
步驟2.(+ B-)(-A +)(-E +)(+ D- )(-C +)
步驟3.(+ B-)(+ C-)(-D +)(+ E-)(+ A-)
我的想法這個問題可能與排序問題有關,但不是在一個序列中交換兩個單獨的元素,在這裏我們必須考慮交換兩個子序列。
這個問題似乎是題外話題,因爲它是關於數學作業,屬於http://maths.stackexchange.com – Raptor
你的第3步不清楚。我認爲你將需要更多的步驟。 –
你的問題有一個衆所周知的名字 - 編輯距離。有一種已知的算法來解決它 - Wagner Fischer算法。維基百科將幫助你:) – Alex