金字塔

金字塔

https://ac.nowcoder.com/acm/problem/51172

分析

为字符串中从 部分为一整棵树时的方案数。那么考虑子树的划分,那么 ,考虑子树在 处回到根节点。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int mod = 1e9,N = 310;
char ch[N];int f[N][N],n;
int main() {
    scanf("%s",ch + 1);n = strlen(ch + 1);
    for(int i = 1;i <= n;i++) f[i][i] = 1;
    for(int len = 2;len <= n;len++) {
        for(int i = 1;i + len - 1 <= n;i++) {
            int j = i + len - 1;
            if(ch[i] == ch[j]) {
                for(int k = i + 1;k < j;k++) {
                    if(ch[k - 1] == ch[i]) 
                    f[i][j] = (f[i][j] + 1ll * f[i][k - 1] * f[k][j - 1] % mod) % mod;
                }                
            }
        }
    }
    cout << f[1][n] << endl;return 0;
}
全部评论

相关推荐

10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
5 收藏 评论
分享
牛客网
牛客企业服务