pku2001.cpp

来自「这是ACM 方面的资料 是PKU的 北京大学的出来的」· C++ 代码 · 共 79 行

CPP
79
字号
#include <stdio.h>
#include <string.h>

char word[1000][30];
int l0[1000], l[1000];
int n;

int comp(int a, int b)
{
	int i;
	
	i = 0;
	while (i < l0[a] && i < l0[b] && word[a][i] == word[b][i])
	{
		i++;
	}		
	
	if (i < l0[a] && i < l0[b])
	{
		return i + 1;	
	}

	if (i == l0[a])
	{
		return l0[a];	
	}
	
	if (i == l0[b])
	{
		return l0[b] + 1;	
	}	
}

void check()
{
	int i, j, k, max, tmp;
	for (i = 0; i < n; i++)
	{
		max = 0;
		for (j = 0; j < n; j++)
		{
			if (i == j)
			{
				continue;	
			}
			tmp = comp(i, j);
			if (tmp > max)
			{
				max = tmp;	
			}
		}
		l[i] = max;	
	}		
}

int main()
{
	int i, j;
	i = 0;
	while (scanf ("%s", word[i]) != -1)
	{
		l0[i] = strlen(word[i]);
		i++;	
	}
	n = i;
	check();
	
	for(i = 0; i < n; i++)
	{
		printf("%s ", word[i]);
		for (j = 0; j < l[i]; j++)
		{
			printf("%c", word[i][j]);	
		}
		printf("\n");
	}
}

⌨️ 快捷键说明

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