| 比赛 | 2024国庆练习3 | 评测结果 | RRRRRRRRRR | 
    | 题目名称 | 金字塔 | 最终得分 | 0 | 
    | 用户昵称 | 徐诗畅 | 运行时间 | 6.016 s | 
    | 代码语言 | C++ | 内存使用 | 3.49 MiB | 
    | 提交时间 | 2024-10-06 16:18:05 | 
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e9;
char ch[305];
int n,dp[305][305];
int dfs(int l,int r){
	if(l>r) return 0;
	if(l==r) return 1;
	if(ch[l]!=ch[r]) return 0;
	if(dp[l][r]) return dp[l][r];
	for(int k=l+2;k<=r;k++) dp[l][r]=(dp[l][r]+dfs(l+1,k-1)*dfs(k,r))%mod;
	return dp[l][r];
}
signed main(){
	freopen("ZYH.in","r",stdin);
	freopen("ZYH.in","w",stdout);
	cin>>(ch+1); n=strlen(ch+1);
	for(int i=1;i<=n;i++){
		if(ch[i]!=ch[1]) dp[i][i]=1;
	}
	printf("%lld",dfs(1,n));
	return 0;
}