• 剑指 Offer II 094. 最少回文分割


    先用区间dp求出每个i,j是否为回文串

    然后找出最小的分割次数即可

    一个好的做法:

    对于求任意区间[i, j]的问题,可以先遍历区间长度,从1开始,一直到n,每次找出dp[i, j]  dp[i + 1, j - 1]之间的关系,这样也能遍历所有的区间,

    并求出想要的答案

    class Solution {
    public:
        int vis[2010][2010];
        int ans[2010][2010];
    
    
        int cut(int j, string s)
        {
            if(vis[0][j])
            {
                ans[0][j] = 0;
                return 0;
            }
            if(ans[0][j] != -1) return ans[0][j];
            int cnt = 9999;
            for(int i = 1; i <= j; i++)
            {
                if(vis[i][j])
                {
                    cnt = min(cnt, cut(i - 1, s) + 1);
                }
            }
            ans[0][j] = cnt;
            return cnt;
    
        }
    
    
        int minCut(string s) {
    
            memset(vis, -1, sizeof(vis));
            memset(ans, -1, sizeof(ans));
            int len = s.length();
            for(int i = 0; i < len; i++)
                vis[i][i] = 1;
            for(int k = 2; k <= len; k++)
            {
                for(int i = 0; i + k <= len; i++)
                {
                    int j = i + k - 1;
                    if(k == 2)
                        vis[i][j] = (s[i] == s[j]);
                    else
                        vis[i][j] = (s[i] == s[j]) && vis[i + 1][j - 1];
                }
            }
            return cut(len - 1, s);
    
        }
    };
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    计算机程序的思维逻辑 (10)
    计算机程序的思维逻辑 (8)
    计算机程序的思维逻辑 (9)
    计算机程序的思维逻辑 (7)
    计算机程序的思维逻辑 (6)
    计算机程序的思维逻辑 (5)
    计算机程序的思维逻辑 (4)
    计算机程序的思维逻辑 (3)
    数字电路设计之STA
    数字电路-亚稳态机制
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15784937.html
Copyright © 2020-2023  润新知