判断最长回文字符串的时候,用这段代码在面对cbbd时输出了bbd,其他都正常,这是为什么呢

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
class Solution {
public:
    string longestPalindrome(string s) {
        int n = s.size();
        if(n<2)
            return s;

        int maxlen = 1;
        int begin = 0;
        int dp[n][n];
        for(int i = 0;i<n;i++)
            dp[i][i] = true;
        //先枚举所有的子字符串

        for(int j = 1;j<n;j++){
            for(int i = 0;i<=j;i++){
                if(s[i]!=s[j])
                    dp[i][j] = false;
                else{
                    if(j-i<3)
                        dp[i][j] = true;
                    else{
                        dp[i][j] = dp[i+1][j-1];
                    }
                }
            if(dp[i][j]&&j-i+1>maxlen){
                maxlen = j-i+1;
                begin = i;
            }
            }        
        }
        return s.substr(begin,maxlen+begin);
    }
};
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

return s.substr(begin,maxlen);