算法导论 练习题 15.4-3

#include 
#include 
#include 

int lcsLength(int **c,char *x,char *y,int i,int j)
{
	if(i<0 || j<0)
		return -1;
	if(c[i][j] != -1)
		return c[i][j];
	if(x[i-1]==y[j-1])
	{
		int a=lcsLength(c,x,y,i-1,j-1);
		c[i][j]=a+1;		
	}
	else
	{
		int up=lcsLength(c,x,y,i-1,j);
		int left=lcsLength(c,x,y,i,j-1);
		if(up>=left)
			c[i][j]=up;	
		else
			c[i][j]=left;
	}
	return c[i][j];
}

int** initC(char *x,char *y)
{
	int xlen=strlen(x);
	int ylen=strlen(y);
	int **c=(int**)malloc((xlen+1)*sizeof(int*));
	for(int i=0;i=1 && j>=1)  
    {  
        if(x[i-1]==y[j-1])  
        {  
            s[i-1]=x[i-1];  
            i--;  
            j--;  
        }  
        else if(c[i][j]==c[i-1][j])  
        {  
            s[i-1]='*';  
            i--;              
        }  
        else  
            j--;  
    }  
    for(;i

你可能感兴趣的:(算法导论)