CF903E. Swapping Characters(暴力)
阿新 • • 發佈:2020-08-24
題意:
給出一組字串,每個字串都由同一個位置的母串交換兩個位置的字母生成,詢問母串,或者確定不存在。
題解:
#include<bits/stdc++.h> using namespace std; const int maxn=5005; int n,m,d[maxn]; char s[maxn][maxn]; map<char,int> mp[maxn]; bool f; int main () { cin>>n>>m; for (int i=1;i<=n;i++) cin>>s[i]; for (intj=0;j<m;j++) { mp[1][s[1][j]]++; if (mp[1][s[1][j]]>1) f=true; } for (int i=2;i<=n;i++) { for (int j=0;j<m;j++) { mp[i][s[i][j]]++; if (s[i][j]!=s[1][j]) d[i]++; } if (mp[i]!=mp[1]) return printf("-1\n"),0; }for (int i=0;i<m;i++) { for (int j=i+1;j<m;j++) { int ff=1; for (int k=2;k<=n;k++) { int tt=d[k]; if (s[k][i]!=s[1][i]) tt--; if (s[k][i]!=s[1][j]) tt++; if (s[k][j]!=s[1][j]) tt--;if (s[k][j]!=s[1][i]) tt++; if (!((tt==2)||(tt==0&&f))) { ff=0;break; } } if (ff) { swap(s[1][i],s[1][j]); return printf("%s\n",s[1]),0; } } } return printf("-1\n"),0; }