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

网站建站和项目部署一样吗微信公众号怎么制作网页

网站建站和项目部署一样吗,微信公众号怎么制作网页,表格制作方法,资源网站推荐1. 理论原理推导 假设有两个序列: 序列 序列 子问题定义: 令 表示序列 和 的最长公共子序列的长度。 递推公式: 对于任意 和 ,我们考虑两个位置上的元素 ​ 和 ​: 如果 ,说明这两个元素可以同时…

1. 理论原理推导

假设有两个序列:

  • 序列 X = x_1, x_2, \dots, x_m

  • 序列 Y = y_1, y_2, \dots, y_n

子问题定义:
dp[i][j] 表示序列 X[1 \dots i] 和 Y[1 \dots j] 的最长公共子序列的长度。

递推公式:
对于任意 1 \le i \le m 和 1 \le j \le n,我们考虑两个位置上的元素 x_i​ 和 y_j​:

  1. 如果 x_i = y_j,说明这两个元素可以同时出现在公共子序列中,此时:

    dp[i][j] = dp[i-1][j-1] + 1
  2. 如果 x_i \neq y_j​,那么最长公共子序列不可能同时包含这两个元素,只能在两种可能中取最大值:

    dp[i][j] = \max\{ dp[i-1][j],\; dp[i][j-1] \}

边界条件:

  • 当 i=0 或 j=0 时,意味着其中一个序列为空,此时 dp[i][j]=0

这一推导基于最优子结构性质:最长公共子序列问题的最优解可以由其子问题的最优解构造得到。


2. 时间复杂度推导

  • 状态个数:
    动态规划表 dp 的大小为 (m+1)×(n+1) 。

  • 状态转移:
    每个状态dp[i][j]的计算只涉及常数时间的比较和加法操作。

因此,总的时间复杂度为:O(m×n)

空间复杂度也为 O(m×n) ;若通过空间优化(例如仅保留当前行和上一行),可降为 O(\min(m, n))


3. 算法步骤

下面是基于上述理论推导的动态规划求解 LCS 的具体步骤:

  1. 初始化:

    • 构建一个大小为 (m+1)×(n+1)的二维数组 dp,所有元素初始化为 0。

    • 行和列的索引从 0 开始,令dp[0][j]=0(对于所有 j)和 dp[i][0]=0(对于所有 i)。

  2. 状态转移:

    • 对于 i 从 1 到 m:

      • 对于 j 从 1 到 n:

        • x_i = y_j​,则令:

          dp[i][j] = dp[i-1][j-1] + 1
        • 否则:

          dp[i][j] = \max\{ dp[i-1][j],\; dp[i][j-1] \}
  3. 结果输出:

    • 最终,dp[m][n] 即为序列 X 和 Y 的最长公共子序列的长度。

  4. (可选)路径回溯:

    • 若需要重构出一个最长公共子序列,可以从dp[m][n]开始,逆向回溯:

      • x_i = y_j​ 时,该元素属于 LCS,记录下来,并同时减小 i 和 j;

      • dp[i-1][j] \ge dp[i][j-1] 时,移动到(i-1, j);否则移动到(i, j-1)


4. Python 代码示例

下面提供一个 Python 代码示例,既计算 LCS 的长度,也重构出一个 LCS:

def lcs_length(X, Y):m, n = len(X), len(Y)# 创建 (m+1) x (n+1) 的二维 dp 数组,并初始化为 0dp = [[0] * (n + 1) for _ in range(m + 1)]# 填充 dp 表for i in range(1, m + 1):for j in range(1, n + 1):if X[i - 1] == Y[j - 1]:dp[i][j] = dp[i - 1][j - 1] + 1else:dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])return dpdef construct_lcs(dp, X, Y):"""根据 dp 表从 X 和 Y 中回溯构造最长公共子序列"""i, j = len(X), len(Y)lcs = []while i > 0 and j > 0:# 如果两个元素相等,加入 LCSif X[i - 1] == Y[j - 1]:lcs.append(X[i - 1])i -= 1j -= 1else:# 否则,沿着较大值的方向回溯if dp[i - 1][j] >= dp[i][j - 1]:i -= 1else:j -= 1lcs.reverse()  # 反转得到正确顺序return lcsdef main():# 示例序列,可以根据需要替换成任意两个序列X = "ABCBDAB"Y = "BDCAB"# 计算 dp 表dp = lcs_length(X, Y)print("最长公共子序列的长度为:", dp[len(X)][len(Y)])# 重构最长公共子序列lcs_seq = construct_lcs(dp, X, Y)print("最长公共子序列为:", ''.join(lcs_seq))if __name__ == '__main__':main()


文章转载自:

http://hYfIpORR.snxbf.cn
http://VDgU9f2N.snxbf.cn
http://Yi2BLHvz.snxbf.cn
http://9vzHnB4B.snxbf.cn
http://A7Yu3tAO.snxbf.cn
http://3TqZC21X.snxbf.cn
http://WdrPBnwQ.snxbf.cn
http://Rad54rMI.snxbf.cn
http://EAKSevlP.snxbf.cn
http://Z53JN7zf.snxbf.cn
http://x2bAfi8X.snxbf.cn
http://VBBHADCo.snxbf.cn
http://dlIBt7Lu.snxbf.cn
http://4fcpZFeR.snxbf.cn
http://vcyfbrHq.snxbf.cn
http://FJNICZRU.snxbf.cn
http://DdGciRB8.snxbf.cn
http://A4fUkU6x.snxbf.cn
http://OzR7hitD.snxbf.cn
http://iLRejKlb.snxbf.cn
http://kVfbXVz0.snxbf.cn
http://YinU5qAM.snxbf.cn
http://EGfPRzWZ.snxbf.cn
http://6oKvfAPi.snxbf.cn
http://d07gINzA.snxbf.cn
http://IQTLya8s.snxbf.cn
http://0P7gL0WS.snxbf.cn
http://MAvYisCR.snxbf.cn
http://x9RZfPXo.snxbf.cn
http://k4bEPn77.snxbf.cn
http://www.dtcms.com/wzjs/621637.html

相关文章:

  • 内力网站建设买域名不建网站
  • 中国第四冶金建设有限公司官方网站我要恢复百度
  • 做网站设计哪里有汕头seo代理
  • 怎么做百度自己的网站空间wordpress 随机名言插件
  • 一个企业可以做多个网站吗哪些网站上可以做seo推广的
  • 域名注册网站免费wordpress下载远程图片
  • 经典企业网站欣赏承德网站设计公司
  • 浙江省建设厅网站证件苏州工业园区最新通告
  • 网站公司说我们做的网站服务器不够用舞钢市做网站开发的公司
  • 网站建设广告投放是什么教育直播网站建设
  • 做网站公司销售开场白哪些网站是react做的
  • 招商网站建设网网页设计与网站建设设计报告
  • 网站开发济南网站的音乐链接怎么做
  • 衡阳网站建设专家济南企业自助建站
  • 自建网站工具wordpress与商城
  • 冀州网站优化网站建设的er图
  • 电子商务网站建设需求说明书打造一个app需要多少钱
  • 宁波关键词网站排名有服务器怎么做网站
  • 免费推广网站大全下载栖霞网站建设
  • 网站建设与管理教案怎么写十大热门网页游戏排行
  • 如何用自己的电脑做网站北京网站开发公司有哪些
  • seo网站点击量排名优化网站设计评价指标
  • 视频解析网站制作wordpress 和shopify
  • seo技术建站1688网站的特点
  • 北京网站建设华网叫任何一个人一个小时做网站
  • 山东电力建设网站仿站模板
  • 分类信息网站系统cms一站式服务是什么意思
  • 软件免费网站大全长沙网站建设搭建
  • 京津冀协同发展意义江西省seo
  • 张家界建设信息网站免费免费建站