1, 2 纯水题。判断问号做加法[n, m] = map(int, input().split())b = []k = 0for i in range(n):    s = input()    for elem in s:        if elem == '?':            k += 1    b.append(s)matrixs = [0, 0, 0, 0, 0]for i in range(n - 1):    for j in range(m - 1):        tt = 0        t = [b[i][j], b[i + 1][j], b[i][j + 1], b[i + 1][j + 1]]        for elem in t:            if elem == '?':                tt += 1            elif elem == 'W':                tt = -1                break        if tt != -1:            matrixs[tt] += 1p = (10 ** 9) + 7def mod_add(a, b):    return ((a % p) + (b % p)) % pdef mod_mut(a, b):    return (a * b) % pmemo = {}def mod_2p(n):    if n < 0:        return 0    if n == 0:        return 1    if n == 1:        return 2    if n in memo:        return memo[n]    t = mod_2p(n // 2)    result = mod_mut(t, t)    if n % 2 == 1:        result = mod_mut(2, result)    memo[n] = result    return resultf = 0for i in range(5):    f = mod_add(f, mod_mut(matrixs[i], mod_2p(k - i)))print(f)
点赞 3
评论 3
全部评论

相关推荐

02-25 19:38
门头沟学院 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务