p1374.cpp
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· C++ 代码 · 共 61 行
CPP
61 行
#include <stdio.h>
#include <string.h>
int N , Smallest;
int len [100];
bool Kuo [100];
char data [100] [101];
void init ()
{
int i;
Smallest = 0;
scanf ( "%d" , &N );
for ( i = 0; i < N; i ++ ) {
scanf ( "%s" , data [i] );
len [i] = strlen ( data [i] );
if ( len [i] < len [Smallest] ) Smallest = i;
}
}
int Ans ()
{
char temp [100] , temp2 [100];
bool Have;
int i , j , k , Limit = len [Smallest] , t , pass;
for ( i = 0; i < Limit; i ++ ) Kuo [i] = 1;
for ( k = 0; k < Limit; k ++ ) {
Have = 0;
for ( i = 0 , j = k; j < Limit; i ++ , j = i + k ) if ( Kuo [i] ) {
strcpy ( temp , data [Smallest] + i ); temp [k + 1] = 0;
for ( t = 0; t < k + 1; t ++ ) temp2 [t] = temp [k - t]; temp2 [k + 1] = 0;
pass = 1;
for ( t = 0; t < N; t ++ ) if ( t != Smallest ) {
if ( strstr ( data [t] , temp ) != NULL ) continue;
if ( strstr ( data [t] , temp2 ) != NULL ) continue;
pass = 0; break;
}
if ( !pass ) Kuo [i] = 0; else Have = 1;
}
if ( !Have ) break;
}
return k;
}
main ()
{
freopen ( "p.in" , "r" , stdin );
freopen ( "p.out" , "w" , stdout );
int total;
for ( scanf ( "%d" , &total ) ; total; total -- ) {
init ();
printf ( "%d\n" , Ans () );
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?