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

    万能的DFS+record啊

    不过划分状态的时候还是要注意下,开始用了错误的方法,以至于TLE

    从头枚举,直到一个回文串,在这里就可以做一个断开操作

    大概是这样

    每个地方都可以不断开

    如果可以断开就断开去dfs

    发现代码很SB
    有问题。。。要重写
    int record[5000][5000];
    class Solution {
    public:
        int minCut(string s) {
            if(s.size() > 500) return 1; //调试的时候加的,结果过了。。。呵呵。。。这样的肯定不行
            for(int i = 0 ; i <= s.size();++i) {
                for(int j = 0 ; j <= s.size() ; ++j) {
                    record[i][j] = -1;
                }
            }
            return dfs(s , 0 , 1);
        }
    private:
        int dfs(string& s , int start , int end) {
            if(record[start][end] != -1) return record[start][end];
            if (end >= s.size()) {
                if(isP(s , start , end)) return 0;
                else return INT_MAX;
            }
            //not break
            int result = dfs(s , start , end + 1);
            int other = INT_MAX;
            if(isP(s , start , end)) {
                other = dfs(s , end , end +1) + 1;
            }
            result = min(result , other);
            record[start][end] = result;
            return result;
        }
        bool isP(string&s , int start , int end) {
            int l = start;
            int r = end - 1;
            while(l < r) {
                if(s[l] != s[r]) return false;
                l++;r--;
            }
            return true;
        }
    };
     
  • 相关阅读:
    Linux学习
    官网地址
    Unsupported major.minor version 51.0
    获取select的option值
    网页中JS函数自动执行常用三种方法
    Python活力练习Day3
    时间复杂度的简单理解版本,非专业~~
    Python活力练习Day2
    Python活力练习Day1
    状压DP之LGTB 与序列
  • 原文地址:https://www.cnblogs.com/x1957/p/3527097.html
Copyright © 2011-2022 走看看