में शब्दकोश का उपयोग करके ज्ञापन तो मैं पाइथन में सबसे कम आम अनुवर्ती कार्यान्वयन करने की कोशिश कर रहा हूं और मेरे पिछले समाधान के लिए इस विकल्प को आजमा रहा था। मैंने परिणामों को याद करने के लिए 2-डी मैट्रिक्स के बजाय एक शब्दकोश का उपयोग करने का प्रयास किया।पायथन
def lcs(s1, s2):
cache = {}
if len(s1) == 0 or len(s2) == 0:
return 0
if (s1, s2) in cache:
return cache[s1, s2]
else:
if s1[-1] == s2[-1]:
cache[s1, s2] = 1 + lcs(s1[:-1], s2[:-1])
else:
cache[s1, s2] = max(lcs(s1[:-1], s2), lcs(s1, s2[:-1]))
print cache
यह
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
लौटा रहा है जो मैं समझता हूँ क्योंकि मैं कुछ तो कैसे मैं इस तरह कुछ कर सकते हैं वापस नहीं कर रहा हूँ।
return cache[s1, s2] = 1 + lcs(s1[:-1], s2[:-1])
और मैं इसे किसी भी सजावट के बिना लागू करने की कोशिश कर रहा हूं।
'cache' समारोह है कि आप memoize को –
@JohnColeman उनका कहना है कि बाहर के लिए धन्यवाद कोशिश कर रहे हैं करने के लिए स्थानीय नहीं किया जा सकता की कोशिश करो। – Angersmash