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/

10-12 19:14