码迷,mamicode.com
首页 > 编程语言 > 详细

LCS算法改进

时间:2015-11-21 00:40:40      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

public static void Lcs_Length(String X,String Y,int c[][])
	{
		X=" "+X;
		Y=" "+Y;
		for(int i=1;i<X.length();i++)
		{
			c[i][0]=0;
		}
		for(int j=0;j<Y.length();j++)
		{
			c[0][j]=0;
		}
		for(int i=1;i<X.length();i++)
		{
			for(int j=1;j<Y.length();j++)
			{
				if(X.charAt(i)==Y.charAt(j))
				{
					c[i][j]=c[i-1][j-1]+1;
				}
				else if(c[i-1][j]>=c[i][j-1])
				{
					c[i][j]=c[i-1][j];
				}
				else
				{
					c[i][j]=c[i][j-1];
				}
			}
		}
	}
	public static void Print_Lcs(int c[][],String X,int i,int j)
	{
		if(i==0||j==0)
			return;
		if(c[i][j]==c[i-1][j])
		{
			Print_Lcs(c,X,i-1,j);
		}
		else if(c[i][j]==c[i][j-1])
		{
			Print_Lcs(c,X,i,j-1);
		}
		else
		{
			Print_Lcs(c,X,i-1,j-1);
			System.out.print(X.charAt(i-1)+" ");
		}
			
	}
	public static void main(String[] args)
	{

		String X="ABCBDAB";
		String Y="BDCABA";
		int c[][]=new int[X.length()+1][Y.length()+1];
		Lcs_Length(X,Y,c);
		for(int i=0;i<c.length;i++)
		{
			for(int j=0;j<c[i].length;j++)
				System.out.print(c[i][j]+" ");
			System.out.println();
		}
		Print_Lcs(c,X,X.length(),Y.length());
	}

 

LCS算法改进

标签:

原文地址:http://www.cnblogs.com/liuhg/p/LCSAlgo.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!