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

商务网站建设服务商网页怎么做出来的

商务网站建设服务商,网页怎么做出来的,济南疫情防控最新消息,钓鱼网站开发教程动态规划(Dynamic Programming, DP)在字符串数组相关的算法题中应用广泛,尤其是在解决子序列、子串、编辑距离、匹配等问题时。动态规划的核心思想是将问题分解为子问题,并通过存储子问题的解来避免重复计算,从而提高效…

动态规划(Dynamic Programming, DP)在字符串数组相关的算法题中应用广泛,尤其是在解决子序列、子串、编辑距离、匹配等问题时。动态规划的核心思想是将问题分解为子问题,并通过存储子问题的解来避免重复计算,从而提高效率。

文章目录

  • 1143. Longest Common Subsequence
    • 问题描述
    • 解题思路
    • C++ 实现
  • 1092. Shortest Common Supersequence
    • 解题思路
    • C++ 实现

1143. Longest Common Subsequence

Given two strings text1 and text2, return the length of their longest common subsequence. If there is no common subsequence, return 0.

A subsequence of a string is a new string generated from the original string with some characters (can be none) deleted without changing the relative order of the remaining characters.

For example, "ace" is a subsequence of "abcde".
A common subsequence of two strings is a subsequence that is common to both strings.

Example 1:

Input: text1 = "abcde", text2 = "ace" 
Output: 3  
Explanation: The longest common subsequence is "ace" and its length is 3.

Example 2:

Input: text1 = "abc", text2 = "abc"
Output: 3
Explanation: The longest common subsequence is "abc" and its length is 3.

Example 3:

Input: text1 = "abc", text2 = "def"
Output: 0
Explanation: There is no such common subsequence, so the result is 0.

问题描述

给定两个字符串 s1s2,找到它们的最长公共子序列的长度。子序列是指从原字符串中删除一些字符(可以不连续)后得到的新字符串。

解题思路

  • 定义状态dp[i][j] 表示 s1 的前 i 个字符和 s2 的前 j 个字符的最长公共子序列长度。
  • 状态转移
    • 如果 s1[i-1] == s2[j-1],则 dp[i][j] = dp[i-1][j-1] + 1
    • 否则,dp[i][j] = max(dp[i-1][j], dp[i][j-1])
  • 初始化dp[0][j] = 0dp[i][0] = 0,表示空字符串的 LCS 长度为 0。
  • 结果dp[m][n],其中 mn 分别是 s1s2 的长度。

C++ 实现

int longestCommonSubsequence(string s1, string s2) {int m = s1.length(), n = s2.length();vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (s1[i - 1] == s2[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];
}

1092. Shortest Common Supersequence

Given two strings str1 and str2, return the shortest string that has both str1 and str2 as subsequences. If there are multiple valid strings, return any of them.

A string s is a subsequence of string t if deleting some number of characters from t (possibly 0) results in the string s.

Example 1:

Input: str1 = "abac", str2 = "cab"
Output: "cabac"
Explanation: 
str1 = "abac" is a subsequence of "cabac" because we can delete the first "c".
str2 = "cab" is a subsequence of "cabac" because we can delete the last "ac".
The answer provided is the shortest such string that satisfies these properties.

Example 2:

Input: str1 = "aaaaaaaa", str2 = "aaaaaaaa"
Output: "aaaaaaaa"

解题思路

这个问题可以转化为求两个字符串的最长公共子序列(LCS),然后通过 LCS 构造最短的公共超序列。

构造最短公共超序列

  • 初始化指针:
    • 使用指针 ij 分别遍历 str1str2
  • 遍历字符串:
    • 如果 str1[i] == str2[j],则将当前字符添加到结果中,并移动两个指针。
    • 否则,将 str1[i]str2[j] 中较小的字符添加到结果中,并移动对应的指针。
  • 处理剩余字符:
    • 如果 str1str2 有剩余字符,将它们全部添加到结果中。

C++ 实现

string shortestCommonSupersequence(string str1, string str2) {int m = str1.length(), n = str2.length();// 动态规划求 LCSvector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (str1[i - 1] == str2[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;} else {dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);}}}// 构造最短公共超序列string result;int i = m, j = n;while (i > 0 && j > 0) {if (str1[i - 1] == str2[j - 1]) {result.push_back(str1[i - 1]);i--;j--;} else if (dp[i - 1][j] > dp[i][j - 1]) {result.push_back(str1[i - 1]);i--;} else {result.push_back(str2[j - 1]);j--;}}// 处理剩余字符while (i > 0) {result.push_back(str1[i - 1]);i--;}while (j > 0) {result.push_back(str2[j - 1]);j--;}// 反转结果reverse(result.begin(), result.end());return result;
}
http://www.dtcms.com/wzjs/430262.html

相关文章:

  • 杭州靠谱的网站设计seo教程优化
  • 小学生的做试卷儿的网站 你这常见的网络营销方式
  • 想自己做淘宝有什么网站吗免费推广网址
  • 实业 东莞网站建设人工智能的关键词
  • 电商网站建设与运营方向日本搜索引擎naver入口
  • 冯提莫斗鱼前在哪个网站做直播培训学校
  • 中软国际软件培训企业网站seo服务
  • 网站建设规划书中包含内容如何开发一个软件平台
  • 长宁区网站建设公司百度站长平台官网登录入口
  • html做简单网站实例网站推广论坛
  • wordpress调用播放器seo搜索引擎招聘
  • 杭州如何做百度的网站线上推广具体应该怎么做
  • 军事信息化建设网站威海seo公司
  • 在线视频网站a一级爰a做免费网络营销的概念
  • 成都手机建站net的网站建设
  • 做有后台的网站网站自动推广软件免费
  • 怎样做免费网站建设网站源码建站
  • 营销型网站建设方法热搜关键词查询
  • 一般做公司网站需要哪几点怎么看关键词的搜索量
  • 温州公司做网站青岛网站建设优化
  • 网站建设 英文网络公司经营范围
  • 包头公司注册seo优化推广教程
  • 江西省住房与城乡建设厅网站seo 推广服务
  • 网站建设的售后聊城疫情最新消息
  • 大淘客cms网站建设360搜索引擎优化
  • 做游戏 做网站不收费推广网站有哪些
  • 简单手机网站如何制作搜索引擎入口google
  • 哪个网站用帝国cms做的营销策划案例
  • 广西企业响应式网站建设设计百度关键词点击排名
  • wordpress怎么改搜索引擎seo推广教程