dp[1][1]=1; for(int len=2;len<=n;len++){ for(int i=1;i+len-1<=n;i++){ int j=i+len-1; for(int k=i;k<j;k++){ if(i!=j){ if(s[i]==s[j]) dp[i][j]=min(dp[i+1][j],dp[i][j-1]); else dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]); }else{ dp[i][j]=1; } } } }