B

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
",ans++,cnt);
36     }
37 }
View Code



原文地址:https://www.cnblogs.com/lbyj/p/5774255.html