Palindrome Partitioning II
solution

class Solution {
public:
    int minCut(string s) {
        int len=s.size();
        vector<vector<int>> flag(len,vector<int>(len));
        for(int i=0;i<len;i++)
        {
            for(int k=0,j=i;j<len;j++,k++)
            {
                if((k==j)||((s[k]==s[j])&&(k==j-1||flag[k+1][j-1]))) flag[k][j]=1;
                else flag[k][j]=0;
            }
        }
        vector<int> cut(len,len);
        for(int i=0;i<len;i++)
        {
            for(int j=0;j<=i;j++)
            {
                if(flag[j][i])
                {
                    if(j==0)cut[i]=0;
                    else cut[i]=cut[i]>cut[j-1]+1?cut[j-1]+1:cut[i];
                }
            }
        }
        return cut[len-1];
    }
};

result
编程集训 day07 dynamic programming

相关文章:

  • 2021-07-06
  • 2022-02-08
  • 2021-12-09
  • 2022-01-13
  • 2021-12-28
  • 2021-11-25
  • 2021-09-13
  • 2021-12-11
猜你喜欢
  • 2021-06-26
  • 2021-09-26
  • 2021-11-12
  • 2022-01-03
  • 2021-09-05
  • 2021-12-15
相关资源
相似解决方案