当前位置: 首页 > news >正文

曲沃县做网站公司wordpress模板编辑首页

曲沃县做网站公司,wordpress模板编辑首页,保定网站制作价格,做外贸怎么做文章目录 动态规划理论基础动规五部曲:出现结果不正确: 1. 647回文子串2. 516最长回文子序列 动态规划理论基础 动规五部曲: 确定dp数组 下标及dp[i] 的含义。递推公式:比如斐波那契数列 dp[i] dp[i-1] dp[i-2]。初始化dp数组…

文章目录

      • 动态规划理论基础
        • 动规五部曲:
        • 出现结果不正确:
      • 1. 647回文子串
      • 2. 516最长回文子序列

动态规划理论基础

动规五部曲:
  1. 确定dp数组 下标及dp[i] 的含义。
  2. 递推公式:比如斐波那契数列 dp[i] = dp[i-1] + dp[i-2]。
  3. 初始化dp数组。
  4. 确定遍历顺序:从前到后or其他。
  5. 打印。
出现结果不正确:
  1. 打印dp日志和自己想的一样:递推公式、初始化或者遍历顺序出错。
  2. 打印dp日志和自己想的不一样:代码实现细节出现问题。

1. 647回文子串

参考文档:代码随想录

分析:
判断一个字符串里面的有多少个回文串,需要二维dp数组,dp[i][j]表示字符串s的[i, j]之间有多少个回文字符串。当s[i] == s[j]的时候,有可能是回文串,i = j 或者 i和j相差一个时是回文串,如果i和j相差的大于1,则需要判断[i+1, j-1]是否是回文串了。而当s[i] != s[j]的时候,s的[i, j]肯定不是回文串,这也表示dp的初始化是false。

dp五部曲:

  1. dp[i][j]含义:表示s[i, j]回文串的个数。统计一个字符串中回文串的个数,使用的是bool型的数组,如果dp[i][j] = true;那么最终的回文串个数加1,而不是记录有多少个回文子串。数组类型的设计也很有意思。
  2. 递推公式:if(s[i] == s[j]) { if(j - i <= 1) {dp[i][j] = true; } else { dp[i][j] = dp[i+1][j-1]; } }
  3. 初始化:dp[i][j] = false;
  4. 遍历顺序:根据递推公式可以得知当前的dp[i][j]有可能需要借助左下方的dp[i+1][j-1],所以遍历顺序是从下到上,先更新下面一行的数据;之后从左到右,先更新左侧的数据。

代码:

class Solution {
public:int countSubstrings(string s) {//dp[i]: 以i结尾的回文子串的个数tvector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));int sum = 0;//注意遍历的顺序是从下到上,从左到右的for(int i = s.size() - 1; i >= 0; i--){for(int j = i; j < s.size(); j++){if(s[i] == s[j]) {if(j - i <= 1) {dp[i][j] = true;sum++;}else if(dp[i+1][j-1]){dp[i][j] = true;sum++;}}}}return sum;}
};

2. 516最长回文子序列

参考文档:代码随想录

分析:
和上一题回文子串不同的地方在于这次的回文子序列不要求是连续的。所以还采用和上一题一样的方法使用二维的dp数组。但是为了更新回文子串的长度,需要将数组的类型设为int型。

dp五部曲:

  1. dp[i][j]含义:表示字符串s中[i, j]之间的最长回文子序列。
  2. 递推公式:if(s[i] == s[j]) dp[i][j] = dp[i+1][j-1] + 2; else dp[i][j] = max(dp[i+1][j], dp[i][j-1]);

在这里插入图片描述

  1. 初始化:dp[i][i] = 1。其余为0。
  2. 遍历顺序:根据递推公式,遍历顺序是从下到上,先把下一行的数据更新好,根据下一行的数据更新本行的数据;从左到右,先更新左侧的数据,根据左侧的数据更新本位置的数据。

在这里插入图片描述

代码:

class Solution {
public:int longestPalindromeSubseq(string s) {//返回最长回文串的长度,数组类型是int型vector<vector<int>> dp(s.size(), vector<int>(s.size(), 0));//初始化for(int i = 0; i < s.size(); i++) dp[i][i] = 1;//更新dpfor(int i = s.size() - 1; i >= 0; i--){for(int j = i + 1; j < s.size(); j++){if(s[i] == s[j]) dp[i][j] = dp[i+1][j-1] + 2;else{dp[i][j] = max(dp[i+1][j], dp[i][j-1]);}}}return dp[0][s.size() - 1];}
};
http://www.yayakq.cn/news/815167/

相关文章:

  • 宁夏网站建设电话关于字体设计的网站
  • 宁波建设银行网站分部商城网站内容模块有哪些
  • 支付宝也做网站吗wordpress 小论坛小程序
  • 网站建设结论如何制作建筑公司网站
  • 怎样建立公司的网站电子商务网站特点
  • 网站建设项目的流程图哪个公司的app软件定制
  • 收录网站源码wordpress 设置数据库
  • 个人网站制作流程图片常州平台网站建设
  • 福田区网站建设企业网站 用个人备案
  • 手机定制网站建设苏州营销型网站设计
  • 班级手机网站墨刀怎样做网站建设与管理需要哪些证书
  • 顺义网站建设昆山规划建设局网站
  • 做视频网站 带宽wordpress正则
  • 国外空间做网站怎么样域名申请成功后怎么做网站
  • 网络公司网站开发域名购买教程
  • 做直播小视频在线观看网站短视频营销名词解释
  • 做网站宁波大点的网络公司建立平台型组织第一步需要做什么
  • 百度网站搜索量提高网站主页怎么做
  • 寮步镇网站仿做纪检监察工作 网站建设
  • 亚马逊 怎么做国外网站网站开发的步骤
  • 网站建立百度信任郑州百度seo
  • 国外推广网站数据库网站有哪些
  • 网站制作与网页制作企业网站建设方案ppt
  • 深圳商城网站设计价格如何给网站数据备份
  • 荆州网站建设荆州网站设计文档模板
  • 滨州网站建设sdshiya宠物用品技术支持 东莞网站建设
  • 网站出现建设中新媒体营销论文选题方向
  • 网站建设有啥费用开发技术网站开发技术
  • 张掖市住房和城乡建设局网站网页游戏传奇霸主攻略
  • 公司网站开发交接注意事项wordpress页面传递参数