zoukankan      html  css  js  c++  java
  • csuoj 1505: 酷酷的单词

    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
    ", w);
    30     }
    31     printf("Case %d: %d
    ", ++kase, cnt);
    32   }
    33   return 0;
    34 }
    View Code
  • 相关阅读:
    Hibernate:组合模式解决树的映射
    以面到点的学习MFC
    linux内核--进程与线程
    控件自定义
    火车车次查询-余票查询--Api接口
    如何处理大量数据并发操作(数据库锁机制详解)
    Java单链表、双端链表、有序链表实现
    事务、数据库事务、事务隔离级别、锁的简单总结
    数据库连接池分析
    Spring面试题集
  • 原文地址:https://www.cnblogs.com/jeff-wgc/p/4469976.html
Copyright © 2011-2022 走看看