省略
省略
C++に変換後のコードはこちら
int N;
char S[102], T[5];
int dp[100][100];
int solve(int a, int b){
int res = 0;
if(a > b) return 0;
if(dp[a][b] >= 0) return dp[a][b];
res >?= solve(a+1, b);
if(S[a] == T[0]){
rep(i,a+1,b,3) if(S[i]==T[1]) rep(j,i+1,b+1,3) if(S[j]==T[2]){
if(3 * solve(a+1,i-1) != i-a-1) continue;
if(3 * solve(i+1,j-1) != j-i-1) continue;
res >?= 1 + solve(a+1,i-1) + solve(i+1,j-1) + solve(j+1,b);
}
}
return dp[a][b] = res;
}
{
rd(N,S,T);
rep(i,N) rep(j,N) dp[i][j] = -int_inf;
wt(solve(0,N-1));
}
Current time: 2024年04月18日17時06分33秒
Last modified: 2020年12月30日16時59分28秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder
トップページに戻る
Logged in as: unknown user (not login)