Follows 10100.c (Total 54 lines):
/* @JUDGE_ID:4461XX 10100 C */
/* A */
#include<stdio.h>
#include<string.h>
#include<ctype.h>
char arr[2][1000][20+1] ;
int table[1000+1][1000+1] ;
int MyMax( int a , int b )
{
if( a>b ) return a ;
else return b ;
}
void lcs( int k1 , int k2 )
{
int i , j ;
for( i=0 ; i<k2 ; i++ ) table[0][i] = 0 ;
for( i=0 ; i<k1 ; i++ ) table[i][0] = 0 ;
for( i=1 ; i<=k1 ; i++ )
for( j=1 ; j<=k2 ; j++ )
if( !strcmp( arr[0][i-1] , arr[1][j-1] ) )
table[i][j] = table[i-1][j-1] + 1 ;
else
table[i][j] = MyMax( table[i][j-1] , table[i-1][j] ) ;
}
int main( void )
{
int time=1 , i , k1 , k2 ;
char in[2][1000+1] , *p ;
while( gets( in[0] ) ){
gets( in[1] ) ;
printf( "%2d. " , time ) ;
if( !strlen( in[0] ) || !strlen( in[1] ) ) printf( "Blank!\n" ) ;
else{
for( i=0 ; in[0][i] ; i++ )
if( !isalpha( in[0][i] ) && !isdigit( in[0][i] ) ) in[0][i] = ' ' ;
for( i=0 ; in[1][i] ; i++ )
if( !isalpha( in[1][i] ) && !isdigit( in[1][i] ) ) in[1][i] = ' ' ;
for( k1=0,p=strtok( in[0] , " " ) ; p ; k1++,p=strtok( NULL , " " ) )
strcpy( arr[0][k1] , p ) ;
for( k2=0,p=strtok( in[1] , " " ) ; p ; k2++,p=strtok( NULL , " " ) )
strcpy( arr[1][k2] , p ) ;
lcs( k1 , k2 ) ;
printf( "Length of longest match: %d\n" , table[k1][k2] ) ;
}
time++ ;
}
return 0 ;
}
/* @END_OF_SOURCE_CODE */
Back to statistics
Ya-Lin Huang (C)
huangyl@gmail.com