题目大意:
思路:
模拟。
毫不吃力。
代码很简单,看注释就行。
代码:
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int n,len[101],ok;
char c[101][101];
int main()
{
scanf("%d",&n);
if (n==1) //特判,只有一个单词
{
cin>>c[1];
cout<<c[1][0];
return 0;
}
for (int i=1;i<=n;i++)
{
cin>>c[i];
len[i]=strlen(c[i]);
}
for (int i=1;i<=n;i++) //枚举每一个数
{
for (int j=1;j<=len[i];j++) //枚举前j位
{
for (int k=1;k<=n;k++) //继续枚举每一个数
{
if (k==i) continue;
ok=0;
for (int q=0;q<=j-1;q++) //判断前j位是否一样
if (c[i][q]!=c[k][q])
{
ok=1;
break;
}
if(ok==0) break; //一样就退出
}
if (ok==1)
{
for (int k=0;k<=j-1;k++) cout<<c[i][k]; //前j位是唯一的前缀就输出
puts(""); //换行
break;
}
}
}
return 0;
}