Follows 140.c (Total 104 lines):

/* @JUDGE_ID:4461XX 140 C */
/* A */
#include<stdio.h>
#include<string.h>
int map[26][26] , tmp_used[10] , tmp_tail , min ;
char tmp[10] , ans[10] , min_ans[10] ;
void initial_map( void )
{
	int i , j ;
	for( i=0 ; i<26 ; i++ )
		for( j=0 ; j<26 ; j++ ) map[i][j] = 0 ;
}
int Max( int m , int n )
{
	if( m>n ) return m ;
	else return n ;
}
void count( void )
{
	int i , j , num=0 ;
	for( i=0 ; i<tmp_tail ; i++ )
		for( j=i+1 ; j<tmp_tail ; j++ )
			if( map[ ans[i]-'A' ][ ans[j]-'A' ] ) num = Max( j-i , num ) ;
	if( !min ){
		min = num ;
		strcpy( min_ans , ans ) ;
	}
	else
		if( min>num ){
			min = num ;
			strcpy( min_ans , ans ) ;
		}
}
void print( void )
{
	int i ;
	for( i=0 ; i<tmp_tail ; i++ )
		printf( "%c " , min_ans[i] ) ;
	printf( "-> %d\n" , min ) ;
}
void recursive( int level )
{
	int i ;
	if( level==tmp_tail ){
		ans[tmp_tail] = '\0' ;
		count() ;
	}
	else
		for( i=0 ; i<tmp_tail ; i++ )
			if( !tmp_used[i] ){
				ans[level] = tmp[i] ;
				tmp_used[i] = 1 ;
				recursive( level+1 ) ;
				tmp_used[i] = 0 ;
			}
}
void swap( char *ch1 , char *ch2 )
{
	char tmp ;
	tmp = *ch1 ;
	*ch1 = *ch2 ;
	*ch2 = tmp ;
}
void sort_tmp( void )
{
	int i , j ;
	for( i=0 ; i<tmp_tail ; i++ )
		for( j=i+1 ; j<tmp_tail ; j++ )
			if( tmp[i]>tmp[j] ) swap( &tmp[i] , &tmp[j] ) ;
}
void main( void )
{
	char arr[100] , *s ;
	int i , used[26] ;
	while( gets( arr ) ){
		if( *arr=='#' ) break ;
		initial_map() ;
		for( i=0 ; i<26 ; i++ ) used[i] = 0 ; /* initial */
		for( min=tmp_tail=0 , s=strtok( arr , ";" ) ; s ; s=strtok( NULL , ";" ) )
			for( i=2 ; *(s+i) ; i++ ){
				map[ *s-'A' ][ *(s+i)-'A' ] = 1 ;
				map[ *(s+i)-'A' ][ *s-'A' ] = 1 ;
				if( !used[ *s-'A' ] ){
					used[ *s-'A' ] = 1 ;
					tmp[tmp_tail++] = *s ;
				}
				if( !used[ *(s+i)-'A' ] ){
					used[ *(s+i)-'A' ] = 1 ;
					tmp[tmp_tail++] = *(s+i) ;
				}
			}
		sort_tmp() ;
		for( i=0 ; i<10 ; i++ ) tmp_used[i] = 0 ; /* initial */
		for( i=0 ; i<tmp_tail ; i++ ) /* recursive */
			if( !tmp_used[i] ){
				ans[0] = tmp[i] ;
				tmp_used[i] = 1 ;
				recursive( 1 ) ;
				tmp_used[i] = 0 ;
			}
		print() ;
	}
}
/* @END_OF_SOURCE_CODE */

Back to statistics
Ya-Lin Huang (C)
huangyl@gmail.com