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 –