/*
* 解题思路:
* 这是道非常坑爹的题目、开始一直Runtime error、不知道为什么、后来发现是再输入的时候
* My dog ate my homework. * Can you believe my dog died after eating my canary... AND MY HOMEWORK * This excuse is so good that it contain 0 keywords.* 最后一行 系统没有换行、不能单单通过判断 ‘\n’ 来停止输入( 这仅对前两行有效 ),还应增加EOF来停止最后一行输入、
* 否则系统一直认为你没有输入完全、进入死循环,导致Runtime error的错误!!
*/
#include#include #define A 30 #define B 100 int m,n; char s[ A ][ B ],str[ A ][ B ],ss[B ]; char convert( char x ) { if( x<='z' && x>='a' ) return x-'a'+'A'; if( x<='Z' && x>='A' ) return x-'A'+'a'; } int search( ) { int i,j; int flag,len; len = strlen( ss ); for( i=0;i ='a' ) || (str[ i ][ p ] <='Z' && str[ i ][ p ]>='A' ) )) { p++; continue; } while( (str[ i ][ p ]<='z' && str[ i ][ p ] >='a' ) || (str[ i ][ p ] <='Z' && str[ i ][ p ]>='A' ) ) ss[ r++ ] = str[ i ][ p++ ]; x = search( ); if( x ) sum++; p++; r = 0; memset(ss,'\0',sizeof( ss ) ); } if( sum > maxSum ) { q = 0; maxSum = sum; maxPos[ q ] = i; } else if( sum == maxSum ) maxPos[ ++q ] = i; } printf("Excuse Set #%d",total++ ); for( i=0;i<=q;i++ ) for( puts(""),j=0;j