https://www.interviewstreet.com/challenges/dashboard/#problem/4f802ebfad2a1
我的代码通过了6/10个测试用例。
from collections import Counter
j,k = map(int, raw_input().split())
y = Counter(len(raw_input()) for i in range(j))
saved = {}
def f(x):
if x in saved: return saved[x]
if x<1: return 0
k = y[x] if x in y else 0
for i in y:
k += y[i]*f(x-i)
saved[x] = k
return k
x = 0
for i in xrange(1,k+1):
x+=f(i)
print (x+1)%1000000007
“y”中的键是超级字符串的长度,其值是集合“H”中具有该长度的超级字符串数。
“已保存”处理备忘录。
f(x)计算长度为x的超字符串。I遍历最后一个“for循环”中的所有值。
除空字符串('')外,x有结果,因此x+1
最佳答案
我认为在任何超级字符串与任何其他超级字符串一致的情况下,这段代码都会失败。
在这种情况下,此代码将多次添加某些情况。
如:
3 2
a
b
ab
输出:8
右输出:7
“AB”重复计数
我自己在试这个问题,如果答案是10/10,我会把答案贴出来
关于python - Hyper Strings InterviewStreet:Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12567717/