您当前的位置: 首页 >  动态规划

孑渡

暂无认证

  • 3浏览

    0关注

    178博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

算法:动态规划

孑渡 发布时间:2021-05-22 18:25:04 ,浏览量:3

给你一个字符串 s,找到 s 中最长的回文子串。

class Solution {
public:
    string longestPalindrome(string s) {
        if(s.empty())
            return "";
        int length = s.size();
        if(length == 1)
            return s;
        vector dp(length, vector(length, false));
        string result = "";
        for(int i = length - 1; i >= 0; i--)
            for(int j = i; j = result.size())
                    result = s.substr(i, j - i + 1);
            }
        return result;    
    }
};

经验: 1、问题拆分为两个部分,一部分是如何确定这个子字符串是回文,另一个问题是考虑长度。拆分开来西靠比较容易解决,并且由于回文字符串的性质可知,同时考虑两边添加元素远比一边添加元素要来的容易。 2、注意:本题DP解法中,遍历顺序是十分考究的,只有解法中的一边++一边–才能够按照要求的顺序更新。 3、C++中二维数组的创建十分容易, vector dp(m, vector(n, a))表示的是初始化一个m行n列的,初始值为a的二维数组。

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径?

class Solution {
public:
    int uniquePaths(int m, int n) {
        vector dp(m, vector(n, 0));
        for(int i = 0; i             
关注
打赏
1663211900
查看更多评论
0.0388s