首页 > 数据结构 > Hash表 > hdu 2027 统计元音-模拟-[解题报告]C++
2013
12-26

hdu 2027 统计元音-模拟-[解题报告]C++

统计元音

问题描述 :

统计每个元音字母在字符串中出现的次数。

输入:

输入数据首先包括一个整数n,表示测试实例的个数,然后是n行长度不超过100的字符串。

输出:

输入数据首先包括一个整数n,表示测试实例的个数,然后是n行长度不超过100的字符串。

样例输入:

2
aeiou
my name is ignatius

样例输出:

a:1
e:1
i:1
o:1
u:1

a:2
e:1
i:3
o:0
u:1

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<time.h>

int T , sign[200]  , hash[5]={'a' , 'e' , 'i' , 'o' , 'u'}; 

char str[105];

int main()
{
    scanf( "%d%*" ,&T );
    while( T-- )
    {
        memset( sign , 0 ,sizeof(sign) );
        gets( str );
        int len = strlen ( str );
        for( int i=0 ; i<len ; ++i )
            sign[str[i]]++;
        for( int i=0 ;i< 5;++i )
            printf( "%c:%d\n" ,hash[i],sign[hash[i]]);
        if( T > 0)  
            puts( "" );  
    }
    return 0;
}

解题转自:http://www.cnblogs.com/Lyush/archive/2011/05/19/2051393.html


  1. 约瑟夫也用说这么长……很成熟的一个问题了,分治的方法解起来o(n)就可以了,有兴趣可以看看具体数学的第一章,关于约瑟夫问题推导出了一系列的结论,很漂亮

  2. 老实说,这种方法就是穷举,复杂度是2^n,之所以能够AC是应为题目的测试数据有问题,要么数据量很小,要么能够得到k == t,否则即使n = 30,也要很久才能得出结果,本人亲测

  3. 站长,你好!
    你创办的的网站非常好,为我们学习算法练习编程提供了一个很好的平台,我想给你提个小建议,就是要能把每道题目的难度标出来就好了,这样我们学习起来会有一个循序渐进的过程!

  4. #!/usr/bin/env python
    def cou(n):
    arr =
    i = 1
    while(i<n):
    arr.append(arr[i-1]+selfcount(i))
    i+=1
    return arr[n-1]

    def selfcount(n):
    count = 0
    while(n):
    if n%10 == 1:
    count += 1
    n /= 10
    return count