我想用递归找到给定矩阵中最长的字符串(最重复的字符)。用户给出的输入是矩阵,以及递归的起始位置。另一件事是矩阵的每个元素只能被递归函数“检查”一次。在
下面是一个例子:
如果我的矩阵是这样的:
abcdeaab
adfdgagh
madafaff
abaacafr
结果应该是start=(5,0), stop=(5,4), c='a'
。结果是这样的,因为字符“a”是矩阵中最长的字符串,从位置(5,0)开始,到(5,4)结束。如您所见,矩阵必须在水平方向和垂直方向上进行检查。在
我以前并没有真正使用递归,所以我被困在这里。在
我读过这篇文章:http://interactivepython.org/courselib/static/pythonds/Recursion/recursionsimple.html。我明白为了实现我想要的目标,我的程序必须遵守三个递归定律:
我开始写代码,然后走到这里:
^{pr2}$我的程序(目前)所做的是将一个字符串转换成一个矩阵,并创建另一个称为matrix2的矩阵,它将跟踪搜索(递归)函数从矩阵访问的元素。在
如有任何建议,我们将不胜感激。在
首先,这个问题很难解决,而且没有已知的有效的解决方案,它被称为Longest Path Problem
要从一个单元格中找出最长路径,可以使用DFS来求解它,这是一种递归算法。在
类似Python的伪代码:
以下是递归算法的3点,因为:
此算法将从某个源单元获得最长路径。您可以对所有单元格重复此操作,以找到“全局”最长路径。在
这个算法只提供最长路径的长度,但是通过返回一个元组
(length,list)
-其中list是在该路径中访问的单元,所以很容易修改它来记住路径本身。在相关问题 更多 >
编程相关推荐