#include <iostream>
using namespace std;
const int mod = 1e9 + 7;
int dp_1[10000],dp_2[10000];
int main()
{
    int n;
    cin >> n;
    dp_1[0] = 10;
    for (int i = 1;i<n;i++)
    {
        dp_1[i] = dp_1[i - 1] * 10;
    }
    dp_2[0] = dp_1[0];
    dp_2[1] = dp_1[1];
    for (int i = 2;i<n;i++)
    {
        dp_2[i] = (dp_1[i] + dp_2[i - 2])%mod;
        for (int j = 1;j<n-1;i++)
        {
            dp_2[i] += (dp_2[j] * dp_2[i - j - 1])%mod;
        }
        dp_2[i] %= mod;
    }
    cout << dp_2[n - 1];
}
第二题答案。
不能检测了,不敢说对。但思想没毛病。dp_1表示只有字符的情况。dp_2[i]要加上dp_2[i-2],
是考虑括号。最后的循环是考虑加号。