題意:
給定n個長度爲m的字符串,讓你構造一個字符串,使得與這n個字符串不同的地方少於1
解析:
根據題意不同的地方最多隻有1個,那麼我們在n個串裏面隨便找一個串作爲基準串。然後我們暴力枚舉修改每一個位置(修改爲’a’~‘z’),.然後再和n-1串作比較。如果不同之處>=2,那麼是肯定不行的。
那麼時間複雜度:O(tm26nm)
#include<bits/stdc++.h>
using namespace std;
int t,n,m;
string s[20];
int main()
{
cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=0;i<n;i++) cin>>s[i];
string ch;
for(int i=0;i<m;i++)
{
string str=s[0];
for(char j='a';j<='z';j++)
{
int f=0;
str[i]=j;
for(int k=1;k<n;k++)
{
int ans=0;
for(int p=0;p<m;p++)
{
if(str[p]!=s[k][p]) ans++;
}
if(ans>=2)
{
f=1;
break;
}
}
if(f==0) ch=str;
}
}
if(ch.size()==0) cout<<-1<<endl;
else cout<<ch<<endl;
}
}