【发布时间】:2022-01-26 11:31:41
【问题描述】:
我在在线评估期间被问到这个问题(我是一名正在寻找 SDE 实习的学生),但无法及时解决(我只给了 5 分钟......)。顺便说一句,你们认为这个问题 5 分钟就够了吗?我只是有点好奇其他人有多好。
不管怎样,问题来了:
给你两个整数元组
(A, B)和(C, D)。
您可以进行两种操作:(A + B, B)(A, A + B)
编写一个返回True的函数,如果使用这两种操作可以将(A, B)转换为(C, D),False否则。
例子:
Input: A = 2, B = 3, C = 8, D = 11
Output: True
我会把我在评估期间写的“想法”写在这里(我只有 70% 的把握)。它似乎工作正常,我不确定为什么它不能通过测试。如果你们知道问题是什么,或者正确的解决方案,请告诉我!
def func(A, B, C, D):
if A == C and B == D:
return True
if A > C or B > D:
return False
return func(A + B , B, C, D) or func(A, A + B, C, D)
【问题讨论】:
-
如果任何一个数字是负数怎么办?
-
@oleksii-tambovtsev hmmmm
(2, 3, 13, 8)应该是真的吗?那我错过了什么 -
@Latra 也许我误解了这个任务,但我认为在每一步中你都可以将第二个元素添加到第一个元素中,反之亦然。所以你可以有
(2, 3) -> (2 + 3, 3) -> (5, 3 + 5) -> (5 + 8, 8) = (13, 8)。 -
有趣的是,这个问题如何获得如此多的赞成票,而 cmets 中的每个人都在抱怨一个不清楚的问题。支持者是否可以帮助所有人更好地解决这个问题?
-
A、B、C、D有哪些限制?如果A, B, C, D < N,我的答案是O(N^2)。
标签: python algorithm recursion