问题陈述:查找可以从给定的摩尔斯电码序列中生成的“仅元音”字符串的数量(必须使用整个字符串)
我有这个当前的递归解决方案。我想加快这个算法在O(n)时间内运行。我知道我可以将我的数组定义为S [j] =可以通过1 ... j访问创建的唯一字符串的最大数量。但我不知道从哪里去。
morsedict = {'A': '.-',
'E': '.',
'I': '..',
'O': '---',
'U': '..-'}
maxcombinations = 0
def countCombinations(codelist):
if len(codelist) is 0:
global maxcombinations
maxcombinations += 1
return
if codelist[0] in morsedict.values():
countCombinations(codelist[1:])
if len(codelist) >= 2 and codelist[:2] in morsedict.values():
countCombinations(codelist[2:])
if len(codelist) >= 3 and codelist[:3] in morsedict.values():
countCombinations(codelist[3:])
return
答案 0 :(得分:0)
对于未来的研究人员来说,这是转换为DP问题的解决方案:
keywords Labels
0 cheap shoes budget
1 luxury shoes expensive
2 cheap hiking shoes budget | sport