【发布时间】:2021-10-18 13:45:47
【问题描述】:
我正在尝试实现以下图片。
这说明的逻辑如下:比较一个块的第一个实体和最后一个实体,如果它们不同,则将其分成两个块。然后,比较分割块的第一个和最后一个实体。重复它,直到我们找到两个相同的实体。
我刚开始编程,刚刚学习了递归逻辑、堆栈和队列。我正在尝试使用 DFS 来实现它,但我不确定如何将它分成两部分并重复。你能帮我找到一个关键字去谷歌吗?或者我可以使用任何匹配的数据结构?
我写了这段代码,但这似乎不起作用。
def getBln(idx1, idx2):
pass
#DFS
def videoRcsv():
if getBln(idx1, idx2) == True:
break
else:
videoRcsv(idx1, idx2/2),videoRcsv(idx2/2, idx2)
def main():
pass
main():
【问题讨论】:
-
我认为您不需要为此使用显式堆栈或队列。您可能希望使用递归,这将利用语言的调用堆栈。
-
是的,我知道我需要以递归方式使用 DFS。但我不确定如何制作树节点
-
目前还不清楚这个算法到底应该完成什么。我觉得推车(解决方案)放在马前(明确的问题描述/规范)。如果你试图在一个列表中找到两个相等的元素,这将不起作用,因为这些元素可能位于主列表的不同部分。整体分治范式通常用于搜索和排序,但不清楚在这种情况下要搜索什么。一些具有预期输出的输入示例可能有助于解释目标。
-
实际预期的输出是什么?您的代码在任何地方都没有
return,也没有任何尝试打印任何内容...您可以编辑您的问题并提供创建初始树的代码,然后添加预期的输出(不是图像,而是 Python 语法)用于该示例树?
标签: python algorithm recursion divide-and-conquer