使用map查找检验
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define stop system("pause")
#define all(x) begin(x),end(x)
using ll = long long;using vi = vector<int>;
#define debug(v) cout<<#v<<":";cout<<v<<endl
using pii = pair<int, int>;const int MAXN = 2e5 + 10;
#define fast ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define rep(i, n) for (int i = 0, i##len = (int)(n); i < i##len; ++i)
#define rpp(i, n) for (int i = 1, i##len = (int)(n); i <= i##len; ++i)
template <typename T> istream& operator>>(istream &is,vector<T> &v) {for(auto i = begin(v); i != end(v); i++) is>>*i;return is;}
template <typename T> ostream& operator<<(ostream &os,const vector<T> &v) {for(auto i = begin(v);i!=end(v);i++) os<<*i<<(i==end(v)-1?"\n":" ");return os;}
//-----------------------------------------------------------------------------------------------------------------------------------------
char solve(char i,char j)
{
int s='S'+'T'+'E';
if(i==j) return i;
else return s-i-j;
}
signed main()
{
int t;
t=1;
//cin>>t;
while(t--)
{
int n,m;cin>>n>>m;
string s[1555];
map<string,int>mp;
rep(i,n)
{
cin>>s[i];
mp[s[i]]=1;
}
int ans=0;
rep(i,n) for(int j=i+1;j<n;++j)
{
string tmp="";
rep(k,m) tmp+=solve(s[i][k],s[j][k]);
if(mp[tmp]) ++ans;
}
//debug(ans);
cout<<ans/3<<endl;
}
//stop;
return 0;
}
来源:CSDN
作者:浅川和人
链接:https://blog.csdn.net/weixin_44116061/article/details/103936305