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 的超字符串。我遍历最后一个'for循环'中的所有值。
x 有除空字符串 ('') 之外的结果,因此 x+1