博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态规划:求最大公共子串
阅读量:6371 次
发布时间:2019-06-23

本文共 1878 字,大约阅读时间需要 6 分钟。

1         ///  2         /// 动态规划:求最大公共子串 3         /// LCS (Longest Common Subsequence) 4         ///  5         private static string LCS(string str1, string str2) 6         {            7             var d = new int[str1.Length, str2.Length]; 8             var index = 0; 9             var length = 0;10             for (int i = 0; i < str1.Length; i++)11             {12                 for (int j = 0; j < str2.Length; j++)13                 {14                     var n = i - 1 >= 0 && j - 1 >= 0 ? d[i - 1, j - 1] : 0;  //左上角15                     d[i, j] = str1[i] == str2[j] ? 1 + n : 0; //当前节点值 = “1 + 左上角的值”:“0”16                     if (d[i, j] > length)  //如果是最大值,则记录该值和行号17                     {18                         length = d[i, j];19                         index = i;20                     }21                 }22             }23             return str1.Substring(index - length + 1, length);24         }25 26         /// 27         /// 自己写的LCS,可求最大子串,最大串重复情况未考虑28         /// 29         /// 30         /// 31         /// 
32 private static string myLcs(string str1, string str2)33 {34 int[,] arr = new int[str1.Length, str2.Length];35 int max = 0;36 int maxIndex = 0;37 for (int i = 0; i < str1.Length; i++)38 {39 for (int j = 0; j < str2.Length; j++)40 {41 if (str1[i] == str2[j])42 {43 arr[i, j] = (i > 0 && j > 0) ? (arr[i - 1, j - 1] + 1) : 1;44 if (arr[i, j] > max)45 {46 max = arr[i, j];47 maxIndex = i;48 }49 }50 }51 }52 53 return str1.Substring(maxIndex - max + 1,max);54 }

 

转载地址:http://wbuqa.baihongyu.com/

你可能感兴趣的文章
DDoS
查看>>
apache 开源项目源码地址
查看>>
java 替换字符串模板(模板渲染)
查看>>
我的友情链接
查看>>
别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(4)
查看>>
javaVuser——javamail发送邮件+附件
查看>>
我的友情链接
查看>>
解决vmware克隆虚拟机网卡无法启动
查看>>
Linux操作系统下杀死进程命令的方法
查看>>
nc 查看服务器开启端口
查看>>
赋值运算符
查看>>
猪肉都被绑上了“家族标签”,大数据已波及到农牧业!
查看>>
有关Linux下线程的创建
查看>>
拖拽文件获得路径
查看>>
安装、启动apache报错集合
查看>>
美团扫码付小程序的优化实践
查看>>
Spring bean 创建过程源码解析
查看>>
文件头尾增加字符串脚本
查看>>
【unity】关于AssetBundle的加载与卸载
查看>>
ansible模块yum、services、setup
查看>>