惯例,先粘个生草翻译
题意大概就是给你
n
n
n个字符串,你可以讲其中的字母任意移动,问是否有可能让这
n
n
n个字符串变成同样的字符串
我们可以另辟蹊径,直接看如果可以的话需要满足什么条件
因为每个字符串最后都相等了,所以只要出现过的字母的出现次数一定是 n n n的倍数(可能一个串里有多个)
那么我们建一个桶,记录每个字母出现的次数就行了
第一行说了是小写字母,所以题解中处理大写的…有点多余
数组建一个大于26的就行
看代码
#include<bits/stdc++.h>
using namespace std;
int n,x[52];
int main(){
int t;
cin>>t;
while(t--){
int sum=1;
cin>>n;
for(int i=1;i<=52;i++)
x[i]=0;
for(int i=1;i<=n;i++){
string a;
cin>>a;
int l=a.size();
for(int i=0;i<l;i++){
x[a[i]-'a'+1]++;
}
}
for(int i=1;i<=52;i++){//扫多也没事,反正0%n也是0(
if(x[i]%n!=0)
sum=0;
}
if(sum==0){
cout<<"No"<<endl;
}
else
cout<<"Yes"<<endl;
}
}