2185.txt

来自「北大ACM题目例程 详细的解答过程 程序实现 算法分析」· 文本 代码 · 共 59 行

TXT
59
字号


#include <stdio.h>

char map[10000][80];
int n,m;
bool sign[75][10000];

int main()
{
	int i, j, n, m, k, h, l;
	bool key;

	scanf( "%d %d", &n, &m );
	
	for( i=0; i<n; i++ )
	scanf( "%s", map[i] );

	for( k=1; k<m; k++ )
	{
		key = true;
		for( i=0; i<n&&key; i++ )
		for( j=k; j<m; j++ )
		if( map[i][j] != map[i][j%k] )
		{
			key = false;
			break;
		}
		if( key )break;
	}

	for( h=1; h<n; h++ )
	{
		key = true;
		for( j=0; j<m&&key; j++ )
		if( !sign[j][h] )
		{
			for( i=h; i<n; i++ )
			if( map[i][j] != map[i%h][j] )
			{
				key = false;
				break;
			}
			if( key )
			{
				for( l=1; l*h < n; l++ )
				sign[j][l*h] = true;
			}
		}
		if( key )break;
	}

	printf( "%d\n", k*h );

	return 0;
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?