Codeforces Round #666 (Div. 2) 参与排名人数13870
[codeforces 1397A] Juggling Letters 26个字母的桶排序
总目录详见https://blog.csdn.net/mrcrack/article/details/103564004
在线测评地址https://codeforces.com/contest/1397/problem/A
Problem | Lang | Verdict | Time | Memory |
---|---|---|---|---|
A - Juggling Letters | GNU C++17 | Accepted | 31 ms | 0 KB |
题目大意:给出n个字符串,可重新组合字符,问能否组成n个完全相同的字符串。
基本思路:
样例模拟如下:
2
caa
cbb
YES
a的数量是2
b的数量是2
c的数量是2
均可平均分配到两个字符串。
3
cba
cba
cbb
NO
a的数量是2
b的数量是4
c的数量是3
a,b不能平均分配到三个字符串。
4
ccab
cbac
bca
acbcc
YES
a的数量是4
b的数量是4
c的数量是8
均可平均分配到四个字符串。
4
acb
caf
c
cbafc
NO
a的数量是3
b的数量是2
c的数量是5
f的数量是2
a,b,c,f不能平均分配到四个字符串。
AC代码如下:
#include <stdio.h>
#include <string.h>
#define maxn 1010
int cnt[30];//a-z,26个字母的桶排序
char s[maxn];
int main(){
int t,n,i,j,m,flag;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(i=0;i<26;i++)cnt[i]=0;//初始化
for(i=1;i<=n;i++){
scanf("%s",s);
m=strlen(s);
for(j=0;j<m;j++)cnt[s[j]-'a']++;//字符的桶排序
}
flag=0;
for(i=0;i<26;i++)
if(cnt[i]%n){flag=1;break;}//同一字符无法平均分配。
if(flag)printf("NO\n");
else printf("YES\n");
}
return 0;
}