URL :atcoder

题面描述
给出n个字符串,求其中两个字符串互相是10个字符所构成的排列有几对

思路
使用map来映射每种字符串即可

代码

#include<bits/stdc++.h>
using namespace std;
long long n;
stringstream ss;
string its(long long x){
    string aans;
    ss<<x;
    ss>>aans;
    ss.clear();
    ss.str("");
    return aans;
}
int cnt[300];
string tmp,s;
unsigned long long ans=0;
unordered_map<string,unsigned long long> us;
unordered_map<string,unsigned long long>::iterator it;
char c;
int main(){
    scanf("%lld",&n);
    for(int i=0;i<n;i++){
        fill(cnt,cnt+256,0);
        tmp="";
        cin>>s;
        for(int j=0;j<s.size();j++) {
            cnt[(int)(s[j]-'a')]++;
        }
        for(int j=0;j<30;j++) tmp=tmp+its(cnt[j]);
        us[tmp]++;
    }
    for(it=us.begin();it!=us.end();it++){
        if(it->second>=2) {
            unsigned long long tmp;
            tmp=it->second*(it->second-1)/2;
            ans+=tmp;
        }    
    }
    cout<<ans;
    return 0;
}