#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e4;
const int INF=1e9;
string s;
int n;
int a[MAXN];
int dp[MAXN][MAXN];
void init(){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
dp[i][j]=INF;
}
}
for(int i=1;i<=n;i++){
dp[i][i]=1;
}
}
int main(){
cin>>s;
n=s.length();
init();
for(int i=2;i<=n;i++){
for(int j=1;j<=n-i+1;j++){
if(s[j-1]==s[i+j-2]){
dp[j][i+j-1]=min(dp[j][i+j-2],dp[j+1][i+j-1]);
continue;
}
for(int k=i;k<i+j-1;k++){
dp[j][i+j-1]=min(dp[j][i+j-1],dp[j][k]+dp[k+1][i+j-1]);
}
}
}
// for(int i=1;i<=n;i++){
// for(int j=1;j<=n;j++){
// cout<<dp[i][j]<<" ";
// }
// cout<<endl;
// }
cout<<dp[1][n]<<endl;
return 0;
}
只有10分... QWQ 求助,帮帮孩子吧。 在线等 急)