比赛 |
20230806测试 |
评测结果 |
EEEEEEEEEE |
题目名称 |
叉叉 |
最终得分 |
0 |
用户昵称 |
空条承太郎& |
运行时间 |
1.814 s |
代码语言 |
C++ |
内存使用 |
5.78 MiB |
提交时间 |
2023-08-06 10:05:03 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=100+5;
const int inf=0x3f3f3f3f;
int n,q;
char c[N],s[N];
int f[N][N];
int dp(int l,int r,int se){
if(l==r&&c[l]==se)
return 0;
if (l==r)
return f[l][r]=1;
if (f[l][r]!=inf)
return f[l][r];
if (s[l]==s[r])
f[l][r]=min(f[l][r],min(dp(l+1,r,s[l]),dp(l,r-1,s[l])));
else{
for (int k=l;k<=r-1;k++)f[l][r]=min(f[l][r],dp(l,k,se)+dp(k+1,r,se));
}
return f[l][r];
}
int main(){
freopen ("painter.in","r",stdin);
freopen ("painter.out","w",stdout);
while(scanf("%s%s",c+1,s+1)){
n=strlen(s+1);
memset(f,0x3f,sizeof(f));
cout<<dp(1,n,-1)<<endl;
}
return 0;
}