#include "stdio.h"
#include "string.h"
#define MX 10
char s[MX];
int f[MX][MX][3];
int Dynamic(){
int i, j, k, len;
len = (int)strlen(s);
for(k=1; k<=len-1; k++){
for(i=0; i<=len-k-1; i++){
for(j=i; j<i+k; j++){
f[i][i+k][0] += (f[i][j][0]+f[i][j][1])*f[j+1][i+k][2] + f[i][j][2]*f[j+1][i+k][0];
f[i][i+k][1] += (f[i][j][0]+f[i][j][1])*f[j+1][i+k][1] + f[i][j][0]*f[j+1][i+k][0];
f[i][i+k][2] += f[i][j][2]*(f[j+1][i+k][1]+f[j+1][i+k][2]) + f[i][j][1]*f[j+1][i+k][0];
}
}
}
return f[0][len-1][0];
}
void main(){
int i;
scanf("%s", s);
memset(f, 0, sizeof(f));
for(i=0; i<(int)strlen(s); i++){
switch(s[i]){
case 'a' : f[i][i][0] = 1; break;
case 'b' : f[i][i][1] = 1; break;
case 'c' : f[i][i][2] = 1; break;
default: break;
}
}
printf("%d\n", Dynamic());
}
王晓东 乘法表问题
最新推荐文章于 2020-08-15 16:02:31 发布