分而治之算法在子列表中找到两个匹配元素
Divide and conquer algorithm to find two matching elements in a sublist
我正在尝试实现下图。
这说明的逻辑如下:比较块的第一个实体和最后一个实体,如果它们不同,则将其分成两个块。然后,比较分块的第一个和最后一个实体。重复直到我们找到两个相同的实体。
我刚开始编程,刚刚学习了递归逻辑、堆栈和队列。我正在尝试使用 DFS 来实现它,但我不确定如何将它分成两部分并重复。你能帮我找个关键词到Google吗?或者有没有我可以使用的匹配数据结构?
我写了这段代码,但这似乎不起作用。
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,用递归实现图片。考虑最简单的情况(函数 returns 答案的条件 - 2 个实体相等或不相等)并从该点继续。
你为什么不使用循环?
int l = 0; // first block
int r = idx2; // index of last block
while( l < r ){
if( blocks[l++] == blocks[r--] ){
// do smth
}
}
我正在尝试实现下图。
这说明的逻辑如下:比较块的第一个实体和最后一个实体,如果它们不同,则将其分成两个块。然后,比较分块的第一个和最后一个实体。重复直到我们找到两个相同的实体。
我刚开始编程,刚刚学习了递归逻辑、堆栈和队列。我正在尝试使用 DFS 来实现它,但我不确定如何将它分成两部分并重复。你能帮我找个关键词到Google吗?或者有没有我可以使用的匹配数据结构?
我写了这段代码,但这似乎不起作用。
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,用递归实现图片。考虑最简单的情况(函数 returns 答案的条件 - 2 个实体相等或不相等)并从该点继续。
你为什么不使用循环?
int l = 0; // first block
int r = idx2; // index of last block
while( l < r ){
if( blocks[l++] == blocks[r--] ){
// do smth
}
}