合肥市住房和城乡建设厅网站用html做卖珠宝的网站

张小明 2026/1/12 1:00:03
合肥市住房和城乡建设厅网站,用html做卖珠宝的网站,佛山公司官网制作哪家好,重庆建设工程造价信息最长公共子序列#xff08;Longest Common Subsequence#xff0c;LCS#xff09;是算法领域的经典问题#xff0c;广泛应用于文本比对、基因序列分析、版本控制等场景。本文将从原理出发#xff0c;结合三段不同实现的 C 语言代码#xff0c;详细讲解 LCS 的求解思路、三…最长公共子序列Longest Common SubsequenceLCS是算法领域的经典问题广泛应用于文本比对、基因序列分析、版本控制等场景。本文将从原理出发结合三段不同实现的 C 语言代码详细讲解 LCS 的求解思路、三种实现方法的差异并通过性能测试分析各方法的适用场景。一、LCS 问题核心概念1.1 定义给定两个字符串X和YLCS 是指在不改变字符相对顺序的前提下同时出现在两个字符串中的最长子序列子序列不要求字符连续。例如X ABCBDABY BDCABA其 LCS 为 BCBA 或 BDAB长度为 4。1.2 核心思路LCS 问题具有最优子结构和重叠子问题特性因此适合用动态规划DP或记忆化递归求解最优子结构若X[i] Y[j]则 LCS (X[1..i],Y[1..j]) LCS(X[1..i-1],Y[1..j-1]) 1若X[i] ≠ Y[j]则 LCS (X[1..i],Y[1..j]) max(LCS(X[1..i-1],Y[1..j]), LCS(X[1..i],Y[1..j-1]))。重叠子问题递归求解时会重复计算相同子问题需通过记忆化或 DP 表避免重复计算。二、三种实现方法详解方法 1基础动态规划实现最简版该方法是 LCS 的基础实现核心是构建 DP 表并回溯构造子序列代码结构简洁适合入门理解。核心代码逻辑c运行// 计算LCS长度填充DP表 int calculate_lcs_length(char X[], char Y[], int m, int n, int dp[MAX_LEN1][MAX_LEN1]) { for (int i 0; i m; i) { for (int j 0; j n; j) { if (i 0 || j 0) dp[i][j] 0; // 空字符串LCS为0 else if (X[i-1] Y[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]; } // 回溯构造LCS序列 void print_lcs_sequence(char X[], char Y[], int m, int n, int dp[MAX_LEN1][MAX_LEN1]) { int index dp[m][n]; char lcs_result[index 1]; lcs_result[index] \0; // 字符串结束符 int i m, j n; while (i 0 j 0) { if (X[i-1] Y[j-1]) { // 匹配字符加入LCS lcs_result[--index] X[i-1]; i--; j--; } else if (dp[i-1][j] dp[i][j-1]) i--; // 向上回溯 else j--; // 向左回溯 } printf(最长公共子序列: %s\n, lcs_result); }特点优点代码极简无冗余逻辑聚焦核心的 DP 表填充和回溯缺点仅支持基础功能无性能测试、DP 表可视化等扩展功能适用场景新手理解 LCS 核心原理快速验证算法正确性。方法 2动态规划增强版带交互与性能测试在基础 DP 实现上增加了交互式菜单、DP 表可视化、多测试用例性能分析等功能适合工程化应用。核心扩展功能交互式菜单支持手动输入字符串、查看 DP 表、运行性能测试性能测试模块针对不同长度的字符串经典示例 长字符串测试运行时间DP 表可视化直观展示 DP 表的填充过程辅助理解算法逻辑内存管理动态分配 LCS 序列内存避免内存泄漏。关键代码片段性能测试c运行void performance_test() { // 经典示例测试 char X1[] ABCBDAB; char Y1[] BDCABA; clock_t start clock(); int result1 lcs_dp(X1, Y1, strlen(X1), strlen(Y1)); clock_t end clock(); double time1 ((double)(end - start)) / CLOCKS_PER_SEC; printf(LCS长度: %d\n, result1); printf(运行时间: %.6f 秒\n, time1); // 长字符串测试 char X2[] ACCGGTCGAGTGCGCGGAAGCCGGCCGAA; char Y2[] GTCGTTCGGAATGCCGTTGCTCTGTAAA; // 同上测试长字符串性能... }特点优点功能全面兼顾易用性和可分析性支持工程化部署缺点代码量较大包含菜单、格式化输出等非核心逻辑适用场景教学演示、算法性能分析、实际项目中的 LCS 工具开发。方法 3记忆化递归 动态规划对比版同时实现记忆化递归和 DP 两种解法并支持对比两者的性能深入理解两种方法的优劣。记忆化递归核心代码c运行// 记忆化递归求解LCS长度 int lcs_recursive_memo(char *X, char *Y, int m, int n) { if (m 0 || n 0) return 0; if (memo[m][n] ! -1) return memo[m][n]; // 已计算过直接返回 if (X[m-1] Y[n-1]) { memo[m][n] 1 lcs_recursive_memo(X, Y, m-1, n-1); } else { memo[m][n] max(lcs_recursive_memo(X, Y, m-1, n), lcs_recursive_memo(X, Y, m, n-1)); } return memo[m][n]; }核心对比逻辑c运行// 性能对比 start clock(); int len1 lcs_recursive_memo(X, Y, m, n); // 记忆化递归 end clock(); double time1 ((double)(end - start)) / CLOCKS_PER_SEC; start clock(); int len2 lcs_dp(X, Y, m, n); // 动态规划 end clock(); double time2 ((double)(end - start)) / CLOCKS_PER_SEC; printf(递归版本运行时间: %.6f 秒\n, time1); printf(DP版本运行时间: %.6f 秒\n, time2); printf(DP比递归快 %.2f 倍\n, time1 / time2);特点优点对比两种解法直观展示 DP 的时间优势记忆化递归通过缓存避免重复计算性能优于纯递归缺点递归深度受限字符串过长易栈溢出适用场景算法对比学习理解递归与 DP 的转换关系。三、性能对比与适用场景3.1 性能测试结果参考测试用例记忆化递归动态规划DP 提速倍数短字符串ABCBDAB/BDCABA0.000012 秒0.000005 秒2.4 倍长字符串30 字符0.000089 秒0.000011 秒8.1 倍3.2 方法选型建议基础 DP方法 1新手入门、快速验证、嵌入式等资源受限场景增强 DP方法 2教学演示、性能分析、实际项目工具开发记忆化递归 DP 对比方法 3算法学习、递归与 DP 的转换研究注意递归深度限制。四、关键注意事项DP 表维度DP 表大小为(m1)×(n1)第 0 行 / 列对应空字符串避免边界判断回溯方向字符不匹配时选择dp[i-1][j]和dp[i][j-1]中较大值的方向若相等则向左 / 向上均可可能得到不同 LCS但长度一致内存管理动态分配 LCS 序列内存后需及时释放避免内存泄漏性能优化DP 表可优化为一维数组仅保留前一行空间复杂度从 O (mn) 降至 O (min (m,n))。五、总结LCS 作为动态规划的经典应用核心在于利用 DP 表存储子问题解避免重复计算。本文的三种实现方法各有侧重基础 DP 聚焦原理增强 DP 兼顾工程化递归 DP 对比则深化对算法的理解。实际应用中动态规划因时间和空间效率优势是 LCS 的首选解法而记忆化递归则适合理解递归思想向 DP 的转换过程。掌握 LCS 的实现思路可举一反三解决同类的最优子结构问题如最长递增子序列、编辑距离等。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

server2008 做网站旅游网站开发的国内外现状

**《深入 Python 调用栈:*args 与 kwargs 在内存里到底长什么样?》 在我教授 Python 的这些年里,有两个语法元素几乎贯穿所有课程、项目与面试:*args 和 **kwargs。它们看似简单,却是 Python 函数调用体系中最具代表性…

张小明 2026/1/7 4:46:51 网站建设

贵阳门户网站友情链接怎么做

深度学习GPU环境避坑指南:如何精准解决 libcudart.so 版本不匹配问题? 你有没有遇到过这样的报错: ImportError: libcudart.so.11.0: cannot open shared object file: No such file or directory明明代码没错,PyTorch或Tens…

张小明 2026/1/8 6:56:10 网站建设

用python做网站我那些龙华网站建设

C Primer 中文版高清资源 - 带详细目录的完整学习指南 【免费下载链接】CPrimer中文版-高清带目录 C Primer 中文版 - 高清带目录 项目地址: https://gitcode.com/open-source-toolkit/87cb1 资源亮点展示 这份《C Primer》中文版电子书资源具有以下突出特点&#xff1…

张小明 2026/1/8 7:03:01 网站建设

商城类网站开发一个公网ip可以做几个网站

如何快速搭建微信智能助手:WeChatFerry框架完整使用指南 【免费下载链接】WeChatFerry 微信逆向,微信机器人,可接入 ChatGPT、ChatGLM、讯飞星火、Tigerbot等大模型。Hook WeChat. 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…

张小明 2026/1/7 4:46:54 网站建设

哪些网站做的比较炫网站建设系统开发感想与收获

lm-sensors硬件监控终极指南:从新手到专家的完整教程 【免费下载链接】lm-sensors lm-sensors repository 项目地址: https://gitcode.com/gh_mirrors/lm/lm-sensors 你的电脑是否经常莫名其妙地死机?风扇噪音大到影响工作?或者担心硬…

张小明 2026/1/10 21:29:03 网站建设

请问下网站开发怎么弄郑州网约车资格证网上报名

PyTorch-CUDA 镜像:构建高效、可复现的深度学习训练环境 在现代深度学习项目中,一个常见的尴尬场景是:研究人员在本地训练好的模型,换到服务器上却因“环境不一致”而无法运行。更令人头疼的是,为了解决 torch 与 CUDA…

张小明 2026/1/8 15:56:13 网站建设