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

泸州网站建设唐网互联什么软件可以发帖子做推广

泸州网站建设唐网互联,什么软件可以发帖子做推广,网站开发运行环境怎么写,动态网站开发从入门到实践文章目录 最长公共子序列不相交的线不同的子序列通配符匹配 最长公共子序列 题目:最长公共子序列 思路 选取s1的[0, i]区间以及s2的[0, j]区间作为研究对象 状态表示:dp[i][j]表示,s1的[0, i]区间以及s2的[0, j]区间内…

文章目录

  • 最长公共子序列
  • 不相交的线
  • 不同的子序列
  • 通配符匹配

最长公共子序列

题目:最长公共子序列

在这里插入图片描述
思路

选取s1[0, i]区间以及s2[0, j]区间作为研究对象

  • 状态表示:dp[i][j]表示,s1[0, i]区间以及s2[0, j]区间内所有的子序列中,最长公共子序列的长度

  • 状态转移方程:

    • s1[i] == s2[j]时,即最长公共子序列以s1[i]结尾,所以有dp[i][j] = dp[i - 1][j - 1] + 1
    • s1[i] != s2[j]时,最长公共子序列一定不以s1[i]结尾,所以
      1. s1[0, i - 1]区间以及s2[0, j]区间寻找答案,即dp[i][j] = dp[i - 1][j]
      2. s1[0, i]区间以及s2[0,j - 1 ]区间寻找答案,即dp[i][j] = dp[i][j - 1]
      3. s1[0, i - 1]区间以及s2[0, j - 1]区间寻找答案,即dp[i][j] = dp[i - 1][j - 1]
      • 综上,12以及包括3,所以dp[i][j] = max(dp[i][j - 1], dp[i - 1][j])
  • 初始化:引入空串,帮助我们初始化
    s1, s2前添加一个空字符,也就是说s1[0]s2[0]的位置的值是空串;
    dp表的大小为 (m+1) x (n+1),其中 m n s1s2的长度。初始化时,将第一行和第一列的值都设置为0
    注意下标的映射

  • 填表顺序:每次ij都需要用到i - 1j - 1,所以从上往下填,从左往右填

  • 返回值:dp[m][n],其中 m n s1s2的长度

C++代码

class Solution 
{
public:int longestCommonSubsequence(string text1, string text2) {int m = text1.size(), n = text2.size();vector<vector<int>> dp(m + 1, vector<int>(n + 1));for(int i = 1; i <= m; i++)for(int j = 1; j <= n; j++)if(text1[i - 1] == text2[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;else dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);return dp[m][n];}   
};

不相交的线

题目:不相交的线

在这里插入图片描述
思路

阅读本题后发现和上题解法基本相同

C++代码

class Solution 
{
public:int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {int m = nums1.size(), n = nums2.size();vector<vector<int>> dp(m + 1, vector<int>(n + 1));for (int i = 1; i <= m; i++)for (int j = 1; j <= n; j++)if (nums1[i - 1] == nums2[j - 1])dp[i][j] = dp[i - 1][j - 1] + 1;elsedp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);return dp[m][n];}
};

不同的子序列

题目:不同的子序列

在这里插入图片描述
思路

选取t[0, i]区间以及s[0, j]区间作为研究对象

  • 状态表示:dp[i][j]表示,s[0, j]区间内所有的子序列中,有多少个t[0, i]区间内的子串
  • 状态转移方程:根据s的子序列包不包含s[j]来划分
    • 包含s[j]时,t[i] == s[j],此时dp[i][j] = dp[i - 1][j - 1]
    • 不包含s[j]时,此时dp[i][j] = dp[i][j - 1]
  • 初始化:引入空串,注意下标的映射,
    • t为空时,s中至少有一个空串是其子串,所以第一行为1
    • s为空时,t只有是空串时,符合题意,第一列除了第一个都是0
  • 填表顺序:ij填写都需要用到i - 1j - 1,所以从上往下填,从左往右填
  • 返回值:dp[m][n],其中 m n ts的长度

C++代码

class Solution 
{
public:int numDistinct(string s, string t) {int m = t.size(), n = s.size();vector<vector<double>> dp(m + 1, vector<double>(n + 1));for(int j = 0; j <= n; j++) dp[0][j] = 1;for(int i = 1; i <= m; i++)for(int j = 1; j <= n; j++){dp[i][j] += dp[i][j - 1];if(t[i - 1] == s[j - 1]) dp[i][j] += dp[i - 1][j - 1];}return dp[m][n];}
};  

通配符匹配

题目:通配符匹配

在这里插入图片描述
思路

选取选取第一个字符串[0, i]区间以及第二个字符串 [0, j]区间作为研究对象

  • 状态表示:dp[i][j]表示,p[0, j]区间内的子串中,能否匹配s[0, i]区间内的子串

  • 状态转移方程:根据根据最后一个位置的元素,来讨论

    • p[j]是普通字符,s[i] == p[j] && dp[i - 1][j - 1] == true ->true
    • p[j] == '?'dp[i - 1][j - 1] == true -> true
    • p[j] == '*'
      • 匹配空串,dp[i][j - 1]
      • 匹配一个字符s[i]dp[i - 1][j - 1]
      • 匹配两个字符s[i]、s[i - 1]dp[i - 2][j - 1]
      • ... ... ... ...

      优化p[j] == '*'

        1. 我们注意到
      • dp[i][j] = dp[i][j -2] || dp[i - 1][j - 2] || dp[i -2][j -2] || ... ...
      • dp[i - 1][j] = dp[i - 1][j -2] || dp[i - 2][j - 2] || dp[i -3][j -2] || ... ...
      • 所以,dp[i][j] = dp[i][j - 1] || dp[i - 1][j]
      • 匹配空串,dp[i][j - 1]
      • 匹配一个,但不舍去*dp[i - 1][j]
      • 所以,dp[i][j] = dp[i][j - 1] || dp[i - 1][j]
  • 初始化:引入空串,注意下标的映射,

    • 初始化整个数组为false
    • dp[0][0]表示两个空串是否匹配,初始化为true
    • 第一行表示s 为空串,p 串与空串只有一种匹配可能,即 p 串表示为 "***",此时也相当于空串匹配上空串,将所有前导为 "*" p子串与空串的 dp 值设为true
  • 填表顺序:ij填写都需要用到i - 1j - 1,所以从上往下填,从左往右填

  • 返回值:dp[m][n],其中 m n sp的长度

C++代码

class Solution 
{
public:bool isMatch(string s, string p) {int m = s.size(), n = p.size();vector<vector<bool>> dp(m + 1, vector<bool>(n + 1));s = " " + s;p = " " + p;dp[0][0] = true;for(int j = 1; j <= n; j++)if(p[j] == '*') dp[0][j] = true;else break;for(int i = 1; i <= m; i++)for(int j = 1; j <= n; j++){if(p[j] == '*')dp[i][j] = dp[i - 1][j] || dp[i][j - 1];elsedp[i][j] = (p[j] == '?' || s[i] == p[j]) && dp[i -1][j - 1];}return dp[m][n];}
};
http://www.hotlads.com/news/297.html

相关文章:

  • 北京哪个网站做兼职比较好seo 优化一般包括哪些内容
  • 网页设计代码计算器搜索引擎关键词优化有哪些技巧
  • 个人网站学生作业太原网站建设开发
  • 宜宾市规划建设局网站百度账号安全中心
  • 如何做优秀的视频网站设计站长工具seo综合查询问题
  • 做网站购买虚拟主机送模板吗茶叶推广软文
  • 建设公积金网站提高网站搜索排名
  • 海南城乡建设庁网站武汉大学人民医院东院
  • 东莞最新防控通知重庆seo网络推广优化
  • 360免费网站空间关键词排名顾问
  • 网站开发+百度编辑器免费外链平台
  • 怎么在一个网站做编辑百度热议
  • 做网站生意买螃蟹一句话宣传自己的产品
  • 网站访问速度分析推广营销
  • wordpress 截取摘要seo优化推广工程师招聘
  • 做鸭加盟最火的网站移动端关键词优化
  • 计算机网站开发论文参考文献武汉网站制作推广
  • 东莞市南城装饰工程东莞网站建设正规推广赚佣金的平台
  • 那个网站攻略做的好完整的网页设计代码
  • 网站专栏建设情况网络营销试题库及答案
  • 网站开发程序设计郑州外语网站建站优化
  • 宁波好的网站推广软件惠州网络营销公司
  • dedecms起诉厦门网站流量优化价格
  • wordpress汽车主题公园seo网络营销外包
  • 网站广告看不到提高网站权重的方法
  • 手工小制作 小学生seo优化百度技术排名教程
  • 南通网站建设百度指数属于行业趋势及人群
  • 容桂网站制作价位旺道seo推广效果怎么样
  • 毕业设计做网站论文好写吗网络游戏推广平台
  • 网站除了域名还要什么用发外链的网址