0
给定的是长度为n的二进制字符串的列表,其中一些是代码字。检查是否对所有列表元素的所有元素都满足某些属性
内部主程序如果满足一些条件,我想将一个元素添加到代码字列表中。算法的相关部分可以写成:从列表开始,只有一个码字添加元素到这个列表(从所有可能的字符串列表中),如果它距离第一个码字至少有d,那么为了添加接下来我们必须在原始列表中找到第一个这样的字符串,与这两个已经添加的码字的距离至少为d。第四个元素也是如此 - 距离已经找到的代码字应该是至少d。等等...
使用递归,我写了下面的代码,这与结尾:
我在做什么错“RuntimeError最大递归深度,同时调用Python对象超标”? (我是一个新手蟒)
def helper(n,d,strings,codes,lastIndex):
for i in range(lastIndex,n):
distanceCheckSatisfied = True
for j in range(len(codes)):
if (not(hammingDistance(codes[j],strings[i]) >= d) or not(distanceCheckSatisfied)):
distanceCheckSatisfied = False
if (distanceCheckSatisfied):
codes.append(strings[i])
helper(n,d,strings,codes,i)
break;
break;
非常感谢您的输入(和代码造型)......然而,即使去除二度破发似乎并没有被工作(这就是为什么我说这毕竟) –
当然除去第二'突破“没有任何改变 - 它从来没有执行过。它看起来像你想打破最顶级的循环,这相当于打破了功能。用'return'语句替换你的两个'break'。 –
这种遗憾的是不工作,要么。对于第一个函数调用什么工作是下面的代码:在范围 \t为I(N): \t \t如果(汉明距离(代码[0],字符串[1]) > = d): \t \t \t codes.append(strings [i]) \t \t \t break –