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