码迷,mamicode.com
首页 > 其他好文 > 详细

csuoj 1505: 酷酷的单词

时间:2015-04-30 23:03:24      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:

http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1505

1505: 酷酷的单词

时间限制: 1 Sec  内存限制: 128 MB 提交: 340  解决: 135 [提交][状态][讨论版]

题目描述

输入一些仅由小写字母组成的单词。你的任务是统计有多少个单词是“酷”的,即每种字母出现的次数都不同。 比如ada是酷的,因为a出现2次,d出现1次,而1和2不同。再比如,banana也是酷的,因为a出现3次,n出现2次,b出现1次。但是,bbacccd不是酷的,因为a和d出现的次数相同(均为1次)。

 

输入

输入包含不超过30组数据。每组数据第一行为单词个数n (1<=n<=10000)。以下n行各包含一个单词,字母个数为1~30。

 

输出

对于每组数据,输出测试点编号和酷单词的个数。

 

样例输入

2
ada
bbacccd
2
illness
a

样例输出

Case 1: 1
Case 2: 0

提示

 

来源

 

 

分析:

只要记录每个单词出现的次数即可,需要注意的是:当出现“aaa” ,,,的时候,结果是0 。

 

官方标程:

 

技术分享
 1 // Rujia Liu
 2 #include<cstdio>
 3 #include<string>
 4 #include<algorithm>
 5 #include<cassert>
 6 using namespace std;
 7 
 8 bool cool(string w) {
 9   int cnt[26] = {0};
10   if(w.length() < 2) return false;
11   for(int i = 0; i < w.length(); i++)
12     cnt[w[i]-a]++;
13   sort(cnt, cnt+26);
14   for(int i = 1; i < 26; i++)
15     if(cnt[i] != 0 && cnt[i] == cnt[i-1]) return false;
16   return true;
17 }
18 
19 int main() {
20   int n, kase = 0;
21   while(scanf("%d", &n) == 1) {
22     assert(n<=10000);
23     int cnt = 0;
24     for(int i = 0; i < n; i++) {
25       char w[100];
26       scanf("%s", w);
27       assert(strlen(w) <= 30);
28       if(cool(w)) cnt++;
29 //      if(cool(w)) printf("%s\n", w);
30     }
31     printf("Case %d: %d\n", ++kase, cnt);
32   }
33   return 0;
34 }
View Code

 

csuoj 1505: 酷酷的单词

标签:

原文地址:http://www.cnblogs.com/jeff-wgc/p/4469976.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!