为什么输出答案时减1才能过?我和题解的代码几乎一样啊。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=60,inf=2e9+10;
char s[N];
int dp[N][N];
int main(){
cin.getline(s+1,N);
int n=strlen(s+1);
for(int i=1;i<=n;++i)dp[i][i]=1;
for(int len=2;len<=n;++len)
for(int l=1,r=len;r<=n;++l,++r){
if(s[l]==s[r]){
dp[l][r]=dp[l][r-1];
continue;
}
dp[l][r]=inf;
for(int i=l;i<r;++i)
dp[l][r]=min(dp[l][r],dp[l][i]+dp[i+1][r]);
}
cout<<dp[1][n]-1;
return 0;
}