示例#1
0
void PRINT_LCS(char b[][50],char x[],int i,int j){
	if(i==0 || j==0)
		return;
	if(b[i][j]=='u'){				/*Jesli w tablicy b jest u to drukuje litere na ukos*/
		PRINT_LCS(b,x,i-1,j-1);
		printf("%c",x[i-1]);
	}else if(b[i][j]=='g')			/*Jesli w tablicy b jest u to drukuje litere gorna*/
		PRINT_LCS(b,x,i-1,j);
	else
		PRINT_LCS(b,x,i,j-1);		/*Jesli jest inaczej (tzn. jest l) to drukuje litere lewa*/
}  
示例#2
0
文件: LCS.c 项目: Bigmercu/Algorithm
void PRINT_LCS(char* X,int i,int j)
{
    if(i==0 || j==0)
        return;
    if(b[i][j]=='\\')
    {
        PRINT_LCS(X,i-1,j-1);
        printf("%c ",X[i]);
    }
    else if(b[i][j]=='|')
        PRINT_LCS(X,i-1,j);
    else
        PRINT_LCS(X,i,j-1);
}
示例#3
0
void LCS_LENGTH(char x[],char y[]){

int m,n,i,j,c[50][50];
char b[50][50];
m=strlen(x);			/*Dlugosc x*/
n=strlen(y);    		/*Dlugosc y*/
for(i=0;i<=m;i++)		
	c[i][0]=0;			/*Wstawiamy zera do pierwszej kolumny*/
for(i=0;i<=n;i++)
	c[0][i]=0;			/*Wstawiamy zera do pierwszego wiersza*/
for(i=1;i<=m;i++)
	for(j=1;j<=n;j++){
		if(x[i-1]==y[j-1])  /*sprawdzamy czy litery na tych samych indeksach sa takie same*/
		{
				c[i][j]=c[i-1][j-1]+1; 
				b[i][j]='u';           /*jesli tak to wstawiamy u myslac o indeksie literze na ukos*/
		}
		else if(c[i-1][j]>=c[i][j-1])	/*jesli nie to sprawdzamy ktory indeks jest większy*/
		{
			c[i][j]=c[i-1][j];			/*Jesli gorny to wstawiamy g*/
			b[i][j]='g';         
		}
		else{
			c[i][j]=c[i][j-1];
			b[i][j]='l';         		/*jesli nie to wstawiamy lewy*/
		}

	}          
PRINT_LCS(b,x,m,n);      				/*wywolujemy funkcje print*/
}   
示例#4
0
文件: LCS.c 项目: Bigmercu/Algorithm
int main(void)
{
    int i = 0,j = 0;
	char X[m],Y[m];
	memset(X,0,sizeof(X));
	memset(Y,0,sizeof(Y));
	while(scanf("%c",&X[i]))
		i++;
	while(scanf("%c",&Y[j]))
		j++;
    //char X[m+1]={'X','A','B','C','B','D','A','B'};
    //char Y[n+1]={'Y','B','D','C','A','B','A'};
    LCS_LENGTH(X,Y);
    printf("LCS长度表c打印出来是这个样子:\n");
    for(i=1;i<=m;i++)
    {
        for(j=1;j<=n;j++)
            printf("%d ",c[i][j]);
        printf("\n");
    }
    printf("路径表b打印出来是这个样子\n");
    for(i=1;i<=m;i++)
    {
        for(j=1;j<=n;j++)
            printf("%c ",b[i][j]);
        printf("\n");
    }
    printf("\nLCS的具体值是:\n");
    PRINT_LCS(X,m,n);
	printf("\n");
    return 0;
}