zoukankan      html  css  js  c++  java
  • leetcode 132 Palindrome Partitioning II

    https://www.cnblogs.com/grandyang/p/4271456.html    leetcode 132

    https://www.cnblogs.com/grandyang/p/7404777.html   leetcode 647

    将字符串切割为回文的最小切割数:动态规划

    p[i][j]表示s[i...j]是否为回文;dp[i]表示s[0...i]有多少种切割方法。

    第一个循环i,遍历字符串中的每一个字符;第二个循环j,遍历0到i,在j处切割为[0,j-1]和[j,i],如果[j,i]为回文,则更新dp[i]。

    class Solution {
    public:
        int minCut(string s) {
            if(s.empty()) return 0;
            int m=s.size();
            vector<vector<bool>> p(m,vector<bool>(m,0));
            vector<int> dp(m,0);
            for(int i=0;i<m;++i) {
                dp[i]=i;
                for(int j=0;j<=i;++j) {
                    if(s[i]==s[j]&&(i-j<2||p[j+1][i-1])) {
                        p[j][i]=true;
                        dp[i]=j==0?0:min(dp[i],1+dp[j-1]);
                    }
                }
            }
            return dp[m-1];
        }
    };
  • 相关阅读:
    CSUOJ 1081 集训队分组
    HDU 1865 More is Better
    HDU 1325 Is It A Tree?
    HDU 1272 小希的迷宫
    CSUOJ 1217 奇数个的那个数
    CSUOJ 1010 Water Drinking
    CSUOJ 1162 病毒
    CodeForces 295B
    CodeForces 20C
    SPOJ MULTQ3
  • 原文地址:https://www.cnblogs.com/LiuQiujie/p/12827551.html
Copyright © 2011-2022 走看看