最近,我的一个朋友向我挑战解决这个难题肚里如下:递归益智
假设你有两个变量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