打卡(11)

https://leetcode-cn.com/problems/palindrome-partitioning/

class Solution {
    
    
private:
    vector<vector<int>> f;//类似于KMP的失败函数
    vector<vector<string>> ret;//返回的答案
    vector<string> ans;//部分答案
    int n;//n代表的是一个n的值
public:
    void dfs(const string& s, int i){
    
    
        if(i==n){
    
    
            ret.push_back(ans);//当已经到达最底层的时候
            return;//结束战争
        }
        for(int j = i; j < n; ++j) {
    
    
            if (f[i][j]) {
    
    //若当前是回文串,则进行下一轮递归
                ans.push_back(s.substr(i, j - i + 1));//将此子串放入答案中,其中substr表示从
                //下标为i的地方开始,向后数j-i+1个数字的子串
                dfs(s, j + 1);//继续递归
                ans.pop_back();//回来之后把最上面的弹出去
            }
        }
    }
    vector<vector<string>> partition(string s) {
    
    
        n = s.size();
        f.assign(n, vector<int>(n, true));//初始化全部为true
        for (int i = n - 1; i >= 0; --i) {
    
    
            for (int j = i + 1; j < n; ++j) {
    
    
                f[i][j] = (s[i] == s[j]) && f[i + 1][j - 1];//动态规划,然后得到所有的dp值
            }
        }//复杂度为O(n^2)
        dfs(s, 0);//深度搜索
        return ret;//返回答案
    }
};

笑死,看了个别人的博客,倒是没有抄袭我的嫌疑,但是真的有人写了那么多,但是一句都不到重点上,可能看着访客量觉得很有成就感呢。建议还是先学好数据结构再来写这些东西吧,太可笑了。

这个题目更多的是体会KMP的思想,想到了倒是想到了,可惜,不够细致,还是需要更加深入的思考。从前对于数学我总是能够深入思考,并且有自己的想法,这就是数学直觉吧大概,希望26岁之前能做出一点重大的成果。

看看就提交了,毕竟真的没啥好写的。最近先学好概率论再说。看来搞机器学习的不只是我一个人呐。吴恩达的机器学习,真是再适合初学者不过了呢。yygq,浅显易懂是不是该把注意力放在浅显上呢。头有点晕,可能是舟车劳顿。拔完智齿,拆完线。

我又活了。回神过来,可能自己也是某大佬看来的别人的博客吧,算了算了,别装了,别嘲讽别人了,得体一点,对一点。

还有一个简单的题目没有写对,该反思一下,自己的傲慢。所以,既然已经发明了能解决一切问题的机器宇宙机,那么能够通解一样分析所有问题的宇宙脑什么时候能问世呢。

猜你喜欢

转载自blog.csdn.net/weixin_47741017/article/details/114500664