数据范围很小,直接暴力枚举,时间复杂度O(m*26*n*m)
对于答案串,要求与所有串比较只能有一个位置字符不同
任意以一个串作为答案串,枚举它的所有变化,只改变它任意一个位置的字符,然后跟这n个串进行比较,如果满足题目条件则输出答案
string s[20];
void solve()
{
int n, m; cin >> n >> m;
for (int i = 0; i < n; i ++ ) cin >> s[i];
string ans = s[0];
for (int i = 0; i < m; i ++ )
{
char tmp = ans[i];
for (char ch = 'a'; ch <= 'z'; ch ++ )
{
ans[i] = ch;
bool flag = true;
for (int j = 0; j < n; j ++ )
{
int cnt = 0;
for (int k = 0; k < m; k ++ )
{
if (s[j][k] != ans[k]) cnt ++;
}
if (cnt > 1)
{
flag = false;
break;
}
}
if (flag)
{
cout << ans << "\n";
return;
}
}
ans[i] = tmp;
}
cout << "-1\n";
}