zoukankan      html  css  js  c++  java
  • HDU 2564 词组缩写

    词组缩写

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14681    Accepted Submission(s): 4763

    Problem Description
    定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写。 比如,C语言里常用的EOF就是end of file的缩写。
     
    Input
    输入的第一行是一个整数T,表示一共有T组测试数据; 接下来有T行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成; 单词长度不超过10,由一个或多个空格分隔这些单词。
     
    Output
    请为每组测试数据输出规定的缩写,每组输出占一行。
     
    Sample Input
    1
    end of file
     
    Sample Output
    EOF
     
    Author
    lemon
     
    Source
     
    Recommend
    yifenfei
     
     
    注意这道题目要考虑特殊情况  如果中间有几个空格怎么办 以及最开始为空格的情况
    这份代码还有一点问题   就是第一次输入前面有空格的情况时,什么都不会输出
    #include<iostream>
    #include<cstring>
    #include<queue>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    #define maxn 1010
    #define INF 99999999
    char str[1010];
    struct node
    {
        char name[15];
    }a[105];
    int main()
    {
        int t;
        while(~scanf("%d%*c",&t))
        {
            gets(str);
            int flag = 0,k = 0;
            for(int i=0;i<strlen(str);i++)
            {
                if(str[i]==' '&&str[i+1]!=' ')
                {
                    int j,p;
                    for(j=flag,p=0;j<i;j++,p++)
                        a[k].name[p] = str[j];
                    a[k].name[p] = '';
                    k++;
                    flag = i+1;
                }
                if(i==strlen(str)-1&&str[i]!=' ')
                {
                    int j,p;
                    for(j=flag,p=0;j<=i;j++,p++)
                        a[k].name[p] = str[j];
                    a[k].name[p] = '';
                    k++;
                }
            }
            char sr[105];
            int q = 0;
            for(int i=0;i<k;i++)
            {
                if(a[i].name[0]>='A'&&a[i].name[0]<='Z')
                   sr[q++] = a[i].name[0];
                else sr[q++] = a[i].name[0] + ('A'-'a');
            }
            sr[q] = '';
            printf("%s
    ",sr);
        }
        return 0;
    }

    这是学长的一份代码,用动态数组的

    #include <stdio.h>
    #include <algorithm>
    #include <set>
    #include <vector>
    #include <string>
    #include <string.h>
    using namespace std ;
    
    int n , m ;
    char str[1000] ;
    
    int main( )
    {
        int c ;
        scanf( "%d" , &c ) ;
        getchar( ) ;
        while( c-- )
        {
            gets(str) ;
            int len = strlen(str) ;
            string tmp = "" ;
            vector<string> words ;
            for( int i = 0 ; i < len ; i++ )
            {
                if( str[i] == ' ' )
                {
                    if( tmp != "" )
                    {
                        words.push_back(tmp) ;
                        tmp = "" ;
                    }
                }
                else
                {
                    tmp += str[i] ;
                }
            }
            if( tmp != "" ) words.push_back(tmp) ;
            string res = "" ;
            for( int i = 0 ; i < words.size() ; i++ )
            {
                res += toupper( words[i][0] ) ;
            }
            printf( "%s
    " , res.c_str() ) ;
        }
        return 0 ;
    }
    彼时当年少,莫负好时光。
  • 相关阅读:
    nyoj--76--超级台阶
    nyoj--17--单调递增最长子序列
    poj-2406-Power Strings(KMP)
    poj-1611-The Suspects(并查集)
    poj 2031--Building a Space Station(prim)
    poj 3259-- Wormholes(SPFA)
    nyoj 21--三个水杯(隐式图bfs)
    HDU
    HDU
    CodeForces
  • 原文地址:https://www.cnblogs.com/l609929321/p/6601541.html
Copyright © 2011-2022 走看看