输入一些仅由小写字母组成的单词。你的任务是统计有多少个单词是“酷”的,即每种字母出现的次数都不同。
比如ada是酷的,因为a出现2次,d出现1次,而1和2不同。再比如,banana也是酷的,因为a出现3次,n出现2次,b出现1次。但是,bbacccd不是酷的,因为a和d出现的次数相同(均为1次)。
标签:
Description
输入一些仅由小写字母组成的单词。你的任务是统计有多少个单词是“酷”的,即每种字母出现的次数都不同。
比如ada是酷的,因为a出现2次,d出现1次,而1和2不同。再比如,banana也是酷的,因为a出现3次,n出现2次,b出现1次。但是,bbacccd不是酷的,因为a和d出现的次数相同(均为1次)。
Input
输入包含不超过30组数据。每组数据第一行为单词个数n (1<=n<=10000)。以下n行各包含一个单词,字母个数为1~30。
Output
对于每组数据,输出测试点编号和酷单词的个数。
Sample Input
2
ada
bbacccd
2
illness
a
Sample Output
Case 1: 1 Case 2: 0
分析:本题的关键问题,如何计算每一个字母出现的次数;如何判断两个字母出现的次数是否相等.
恩,这题做了很久,就是感觉自己对一些与字符有关的问题,还是有很多问题,不擅长,以后自己得多注意了。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int main() 6 { 7 int n,ans,cnt,flag,m,i,j; 8 char s[32]; 9 int tot[26]; 10 ans=1; 11 while(scanf("%d",&n)!=EOF) 12 { 13 cnt=0; 14 while(n--) 15 { 16 flag=1; 17 scanf("%s",&s); 18 memset(tot,0,sizeof(tot)); 19 m=strlen(s); 20 for(i=0; i<m; i++) 21 tot[s[i]-‘a‘]++;//每一个字母的个数 22 for(i=0; i<26; i++) //判断是否是酷酷单词 23 for(j=i+1; j<26; j++) 24 { 25 if(tot[i]==tot[j]&&tot[i]!=0) 26 { 27 flag=0;//大意了,if到第一个分号就结束了 28 break; 29 } 30 31 } 32 if(flag==1&&m!=1) 33 cnt++; 34 } 35 printf("Case %d: %d\n",ans++,cnt); 36 } 37 }
标签:
原文地址:http://www.cnblogs.com/lbyj/p/5774255.html