最近,我的一個朋友向我挑戰解決這個難題肚裏如下:遞歸益智
假設你有兩個變量x和y。這些是可以用於程序存儲的唯一變量。有三種操作可做到:
- 操作1:X = X + Y
- 操作2:X = XY
- 動作3:Y = XY
現在,你給出兩個數字n1和n2以及一個目標數字k。用x = n1和y = n2開始,有沒有辦法通過上面提到的操作到達x = k?如果是,那麼可以生成x = k的操作順序是什麼。
例如:如果n1 = 16,n2 = 6且k = 28,則答案爲YES。順序是:
Operation 1
Operation 1
如果n1 = 19,n2 = 7且k = 22,則答案爲YES。順序是:
Operation 2
Operation 3
Operation 1
Operation 1
現在,我已經把我的頭圍繞這個問題太久了,但我沒有得到任何初步的想法。我有一種感覺,這是遞歸,但我不知道應該是什麼邊界條件。如果有人能指導我採用可以用來解決這個問題的方法,那將是非常有幫助的。謝謝!
您是否允許使用更多變量/數據結構來查找這個操作序列? – amit
是的。這是允許的。 – n00bc0d3r
如果存在最短序列,可以使用BFS完成。不確定什麼停止條款將確保確定沒有可能的順序。 – amit