单词缩写

57 篇文章 1 订阅

1.题目
  我们经常英文缩写,如IBM是International Business Machines的缩写。一个名字通常包含多个单词。一个单词以一个大写字母打头(“A”~”Z”),后面不跟或跟多个小写字母(“a”~”z”)。缩写是由每个单词的首字母组成。
  现在,给出两个名字,要求你说出这两个名字的缩写是否相同。
2.输入
  标准输入将包含多个测试案例。输入的第一行是一个整数T, 代表测试案例的格式。然后,是T组测试案例。
  一组测试案例有四行。
  第一行是一个整数N(1≤N≤5),表示第一个名字中单词的个数。
  第二行显示了第一个名字。
  第三行是一个整数M(1≤M≤5),表示第二个名字中单词的个数。
  第四行显示了第二个名字。
  每个名字由多个单词组成,单词间用一个空格隔开,每个单词的长度小于10个。每个单词的第一个字母是大写字母,其余字母是小写字母。
3.输出
  结果应为标准输出。每个测试案例输出一行。如果两个名字的缩写相同,则输出”SAME”,否则,输出”DIFFERENT”。
4.输入案例
3
4
Super Harddisc Drive Cooler
3
Spade Heart Diamond Club
3
Shuai Ge Hao
4
C P C S
5.输出案例
SAME
SAME
DIFFERENT
解答:
  本题是比较两个缩写词是否相同,而缩写词又是从一个包含多个单词的名字中合成的。每次读入一个单词,然后取出它的第一个字母,连接在字符串上,就组成了一个缩写词。
  本题的难点在单词的读取控制上,对于输入数据的控制,是ACM竞赛中考查的一个重要方面。
  另外,大家可以试试,使用printf输出比使用cout输出快很多。
  //abbreviation.cpp 

#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main(int argc, char* argv[])
{
    //ifstream cin("aaa.txt");
    string s,ssa,ssb;
    int t,n,m;
    cin>>t;
    for (int i=0;i<t;i++)
    {
        cin>>n;
        for (int j=0;j<n;j++)
        {
            cin>>s;
            ssa=ssa+s[0];
        }

        cin>>m;
        for (int k=0;k<m;k++)
        {
            cin>>s;
            ssb=ssb+s[0];
        }

        if(ssa.compare(ssb) == 0) //相等返回0,大于返回1,小于返回-1
            //cout<<"SAME"<<endl;
            printf("SAME\n");
        else
            //cout<<"DIFFERENT"<<endl;
            printf("DIFFERENT\n");
        ssa="";
        ssb="";

    }

    return 0;
}

效果如下:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sanqima

一键三连,多多益善

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值