aiaiask.com©

开花即结果 提问即答案

"Python 挑战:计数不含 'red' 子串但含 'red' 子序列的字符串数量(模 10^9+7)"
原始问题:

"Python 挑战:计数不含 'red' 子串但含 'red' 子序列的字符串数量(模 10^9+7)"

解析:这是一个字符串处理问题,需要计算长度为n的、仅由'r'、'e'、'd'三种字母组成的字符串中,有多少是可爱串。我们可以通过遍历所有可能的字符串,然后检查每个字符串是否满足条件(包含子序列"red",且不包含子串"red")来解决这个问题。最后,将满足条件的字符串数量对10^9 7取模。

代码如下:

def count_lovely_strings(n):
    MOD = 10**9 + 7
    if n == 1:
        return 3
    elif n == 2:
        return 6
    else:
        dp = [[0] * (n + 1) for _ in range(n + 1)]
        dp[0][0] = 1
        dp[1][0] = 1
        dp[1][1] = 1
        for i in range(2, n + 1):
            dp[i][0] = (dp[i - 1][0] + dp[i - 1][1]) % MOD
            dp[i][1] = (dp[i - 1][0] + dp[i - 1][2]) % MOD
            if i >= 3:
                dp[i][2] = (dp[i - 2][0] + dp[i - 2][1]) % MOD
        return (dp[n][0] + dp[n][1] + dp[n][2]) % MOD

# 测试
print(count_lovely_strings(4))

这段代码首先定义了一个函数count_lovely_strings,接受一个参数n,表示字符串的长度。接着,我们初始化一个二维数组dp,用于存储动态规划的状态。然后,我们遍历所有可能的字符串,并更新dp数组。最后,我们返回dp[n][0] + dp[n][1] + dp[n][2],即满足条件的字符串数量。

"Python 挑战:计数不含 'red' 子串但含 'red' 子序列的字符串数量(模 10^9+7)"
https://www.aiaiask.com/ask/46105.html
AI / 模型Siliconflow
时间 / DATESeptember 6, 2023, 7:31 PM
语言zh-CN
IP / 区域广东 深圳