1 /// <summary> 2 /// 动态规划:求最大公共子串 3 /// LCS (Longest Common Subsequence) 4 /// </summary> 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 /// <summary> 27 /// 自己写的LCS,可求最大子串,最大串重复情况未考虑 28 /// </summary> 29 /// <param name="str1"></param> 30 /// <param name="str2"></param> 31 /// <returns></returns> 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 }
动态规划:求最大公共子串
转载于:https://www.cnblogs.com/zhangzhu/archive/2012/12/27/2836146.html
相关文章:

java 不可最小化,java – 这是最小化绑定失效的有效方法吗?
我有一些复杂的Observable结构,这可能是也可能不是坏主意,但这不是这个问题的焦点.这些结构的问题在于它们会产生很多UI显示的Observable对象的失效.就像我所知道的那样,当JavaFX UI显示某些内容时,它在其上注册了ChangeListener,因此任何使用延迟评估的尝试都会消失.也就是说,…

让你的javascript函数拥有记忆功能,降低全局变量的使用
考虑例如以下场景:假如我们须要在界面上画一个圆,初始的时候界面是空白的。当鼠标移动的时候,圆须要尾随鼠标移动。鼠标的当前位置就是圆心。我们的实现方案是:假设界面上还没有画圆,那么就新创建一个;假设…

Maven学习总结(6)——Maven与Eclipse整合
2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(六)——Maven与Eclipse整合 一、安装Maven插件 下载下来的maven插件如下图所示:,插件存放的路径是:E:/MavenProject/Maven2EclipsePlugin 进入到eclipse中的dropins目录…

为python安装numpy和scipy(federo)
为了进行数值计算,例如积分等等,需要安装numpy和scipy,其中scipy是依赖于numpy的,所以先要装numpy. 1, 通过下载http://pypi.python.org/pypi/numpy,然后python set.up install安装,不过有些行不…

php执行mysql insert,当执行mysql insert 时插入两条是咋回事
当执行mysql insert 时插入两条是怎么回事?本帖最后由 Eason_____________ 于 2013-07-25 11:25:44 编辑//做了一个手机上传图片到服务器的功能。但是获取到执行insert语句时都要执行两次!//index.phpheader("Content-Type: text/html; charsetUTF-…

产品经理要读什么书?怎么读?
产品相关知识可以在:http://www.aipingce.com/进行学习,本文转自:http://www.aipingce.com/article-22960-1.html 首先,我个人还是非常推荐大家看实体书的,原因如下,算是做个分析吧: 电子书是免…

HTML5:理解head
2019独角兽企业重金招聘Python工程师标准>>> HTML文档的head部分,通常包括指定页面标题,为搜索引擎提供关于页面本身的信息,加载样式表,以及加载JavaScript文件(出于性能考虑,多数时候放在页面底…

php定时任务为什么不好写,php解决crontab定时任务不能写入文件问题的方法分析...
本文实例讲述了php解决crontab定时任务不能写入文件问题的方法。分享给大家供大家参考,具体如下:今天使用crontab写的定时任务没有执行,很纳闷。crontab.phperror_reporting(0);$time date("Y-m-d h:i:s",time());file_put_conten…

SpringMVC权限管理
2019独角兽企业重金招聘Python工程师标准>>> 1.DispatcherServlet SpringMVC具有统一的入口DispatcherServlet,所有的请求都通过DispatcherServlet。 DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servl…

搭建Hadoop集群步骤
——基于三台机器 一、前提 1、 首先要有三台已联网机器,假设为A,B1,B2。其中A:192.168.81.91;B1:192.168.81.92;B2:192.168.81.93。机器装有Ubuntu10.04服务器版64位操作系统。 2、 对三台机器做相同的处…

使用DCloud+Framework7制作移动APP应用(一)
http://my.oschina.net/kenblog/blog/516201转载于:https://www.cnblogs.com/NodeStudy/p/5223273.html

nsq php,Nsq从入门到实践
当nsq跑起来之后, 我们可能会遇到以下问题分布式部署处理错误(何时requeue)如何使用golang lib抱着不应该只停留在入门的态度, 笔者粗浅的研究了一下这几个问题, 希望也对有同样疑问的人有帮助.部署由于NSQ的分布式网络结构, NSQD必须广播(到lookup)自己的地址并让消费者连接, …

Java单元测试之JUnit4详解
2019独角兽企业重金招聘Python工程师标准>>> Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法。目前支持的主要注解有: BeforeClass 全局只会执行一次,而且是第一个运行Before 在测试方法运行之前运行…

Java 学习笔记 ------第二章 从JDK到IDE
本章学习目标: 了解与设定PATH了解与指定CLASSPATH了解与指定SOURCEPATH使用package与import管理类别初步认识JDK与IDE的对应关系一、第一个Java程序 工具:使用Windows自带记事本或下载其他编辑器(推荐NotePad和Sublime) //第一个…

Delphi中的容器类(二)
TStrings类 出于效率的考虑,Delphi并没有象C和Java那样将字符串定义为类,因此TList本身不能直接存储字符串,而字符串列表又是使用非常广泛的,为此Borland提供了TStrings类作为存储字符串的基类,应该说是它除了TList…

Java怎么把数组怎么放入set,如何将数组转换为Java中的Set
回答(16)2 years ago我从上面的建议中写下了以下内容 - 偷了它......真好!/*** Handy conversion to set*/public class SetUtil {/*** Convert some items to a set* param items items* param works on any type* return a hash set of the input items*/public s…

vue组件定义、组件的切换、组件的通信、渲染组件的几种方式(标签、路由、render)...
vue中全局的概念是什么?---就是全局定义的功能,所有实例化的vm都可以使用, 全局定义的是挂在构造函数Vue上面的,所以实例化出的对象都可以使用这个功能 1、什么是组件?---从UI的角度把页面拆分成不同的部分࿰…

JS九九乘法表
来一个老生常谈的话题--九九乘法表,哈哈,好久不写了呢 <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title></title><style>th{border: #ccc 1px solid;font-weight: n…

Php Fatal error: Allowed memory size of 33554432 bytes exhausted 的解决办法
Php Fatal error: Allowed memory size of 33554432 bytes exhausted 的解决办法 在 php.ini 配置文档里面,默认的memory_limit 属性值为32M ,值设置得太小了而导致这个问题的出现。 解决这个问题,我们一般有三种方式: 1、修改PHP…

php 自加 性能,对于数据库的自增、自减心得
系统研发过程中会有很多地方涉及到自增、自减操作 如:加入版块时,用户版块数自增1,版块用户数自增1;退出版块时,用户版块数要减1,版块用户数也要减1这里推荐:1.自增可以用2.自减不要用ÿ…

Linux rsync目录同步功能实现
实现目标:A 服务器上 /opt/web 目录,与B服务器上 /opt/web目录实现同步。即:B主动与A进行同步。OS: Reaht AS4A Server 192.168.1.2 /opt/webB Server 192.168.1.3 /opt/web一. A Server config1.rsync 系统自带, 需要使用 --deamon 方式进行启动,服务端口是 TCP …

宏定义的布局约束
*自适应向布局约束的转化关闭*/ #define PREPCONSTRAINTS(VIEW) [VIEW setTranslatesAutoresizingMaskIntoConstraints:NO] #define CONSTRAIN(PARENT, VIEW, FORMAT) [PARENT addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:(FORMAT) options:0 metrics:nil…

项目中WebService使用Spring容器的配置
<context:component-scan base-package"com.huawei.support"> <context:include-filter type"annotation" expression"org.aspectj.lang.annotation.Aspect" /> </context:component-scan> 扫描采用注解…

java 静态代码块 多线程,Java多线程编程笔记10:单例模式
立即加载:“饿汉模式”立即加载就是指使用类的时候已经将对象创建完毕,常见的实现方法就是直接new实例化。也就是在调用方法前,实例就被创建了。示例代码如下所示:class MyObject{private static MyObject myObjectnew MyObject()…

创业笔记-Node.js入门之阻塞与非阻塞
阻塞与非阻塞 正如此前所提到的,当在请求处理程序中包括非阻塞操作时就会出问题。但是,在说这之前,我们先来看看什么是阻塞操作。 我不想去解释“阻塞”和“非阻塞”的具体含义,我们直接来看,当在请求处理程序中加入阻…

vs 添加ico图 到资源
有时候想用自己做的ico 文件作为程序的图标来取代VS 程序默认的图标;在VS2005 资源视图中,打开Icon 上右击-->Add resource -->Import -->选择自己的ico 文件会跳出个错误框,说VS不支持32 位彩色图片; 网上搜索说VS不支…

HIVE QL 杂记
最近要处理用户访问日志,需要从HIVE中取数据,写了一些HIVE QL,有一点小感想,记录在此。 1. 临时表 在HIVE中进行多表连接时,可以给一些临时表命名,这样有助于理清查询语句之间的逻辑,格式为&…

java和内存交互,java内存模型-内存间交互操作
前言本文是阅读周志明大佬的《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》第12章,12.3节Java内存模型得来的读书笔记。阅读告警😂😂😂,本文可能会有点枯燥,大部分内容都是对书中内容做一…

文件读写io操作范例
系统io读写,copy int main(int argc, char **argv) { if(argc ! 3) { printf("Usage: %s <src> <dst>\n", argv[0]); exit(0); } int fd1, fd2; fd1 open(argv[1], O_RDONLY); fd2 open(argv[2], O_CREAT | O_TRUNC | O_WRONLY); if(…

一步步教你编写redactor的插件
Redactor是一款JQuery框架下的所见即所得在线HTML编辑器,具有常用的功能如图片/文件上传、表格、格式化等等,不仅轻量级和跨浏览器,还支持各种平台如PC、Mac、iPad, iPhone、Android、Refrigerators,更重要的它能够自动保存、自动…