Untitled
unknown
plain_text
2 years ago
644 B
14
Indexable
def numWays( words, target): m, n, k, N = len(words), len(words[0]), len(target), 10**9 + 7 Q = [[0] * 26 for _ in range(n)] dp = [[0] * k for _ in range(n)] sp = [[0] * k for _ in range(n)] for i in range(n): for j in range(m): Q[i][ord(words[j][i]) - ord("a")] += 1 dp[0][0] = sp[0][0] = Q[0][ord(target[0]) - ord("a")] for i in range(1, n): for j in range(k): if j > 0: dp[i][j] = Q[i][ord(target[j]) - ord("a")] * sp[i-1][j-1] else: dp[i][j] = Q[i][ord(target[j]) - ord("a")] sp[i][j] = (sp[i-1][j] + dp[i][j]) % N return sp[-1][-1] % N
Editor is loading...