题意:
有时,我们写一个名称的缩写。例如,IBM是国际商业机器的缩写。名称通常由一个或多个单词组成。一个单词以大写字母('A' - 'Z')开头,后跟零个或多个小写字母('a' - 'z')。名称的缩写是由单词的所有第一个字母组成的单词。
现在,你有两个名字,并要求决定他们的缩写是否相同。
输入
标准输入将包含多个测试用例。输入的第一行是单个整数T,它是测试用例的数量。其后将是T个连续的测试用例。
每种情况有四行。
第一行包含一个整数N(1 <= N <= 5),表示名字中的字数。
第二行显示名字。
第三行包含一个整数M(1 <= M <= 5),表示第二个名称中的字数。
第四行显示第二个名称。
每个名称由以空格分隔的多个单词组成。每个单词的长度小于10.每个单词的第一个字母总是大写,其余的都是小写。
输出
结果应针对标准输出。每个测试用例的输出应该是一行。如果两个名称的缩写相同,则输出“SAME”,否则输出“DIFFERENT”。
Sample Input
3 4 Super Harddisc Drive Cooler 4 Spade Heart Diamond Club 3 Shen Guang Hao 3 Shuai Ge Hao 3 Cai Piao Ge 4 C P C S
Sample Output
SAME SAME DIFFERENT解题思路:输入每个单词,然后保存每个单词的第一个字母然后再进行比较即可。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{ vector<string>a,b;
int i,n,k,h,w;
char c[5],d[5];
string e;
cin>>n;
for(i=0;i<n;i++)
{ w=9;
cin>>k;
for(int q=0;q<k;q++)
{
cin>>e;
a.push_back(e);
c[q]=a[q][0];
}
cin>>h;
for(int q=0;q<h;q++)
{
cin>>e;
b.push_back(e);
d[q]=b[q][0];
}
if(k==h)
{
for(int q=0;q<k;q++)
if(d[q]!=c[q])
{
cout<<"DIFFERENT"<<endl;
w=1;
break;
}
if(w==9)
cout<<"SAME"<<endl;
}
else if(k!=h)
cout<<"DIFFERENT"<<endl;
a.clear();
b.clear();
}
return 0;
}
回顾:说实话这道题挺水的,但是,但是,但是,我是提交了十多遍才才通过的,我不知道为什么,我换了好几种方法,每次无论怎么运行都没有错误但是每次提交都WR,然后这次过了,分析了一下,我觉得后太测试数据可能有的首字母不是大写的而我以前写的哪些都是直接判断首字母是不是大写才保存的所以才出错,总之这道题提交这么多遍真的很无奈。