题目链接:
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1946
此题比较简单。代码如下:
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
#include<iterator>
#include<algorithm>
using namespace std;
string convertToAbbreviation(string str);
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("D:\\in.txt", "r", stdin);
freopen("D:\\out.txt", "w", stdout);
#endif // ONLINE_JUDEG
int n(0);
int m1, m2;
string str1, str2, dst1, dst2;
cin >> n;
for (int i = 0; i < n; i++)
{
str1 = str2 = dst1 = dst2 = "";
cin >> m1;
getchar();
getline(cin, str1);
cin >> m2;
getchar();
getline(cin, str2);
dst1 = convertToAbbreviation(str1);
dst2 = convertToAbbreviation(str2);
if (dst1 == dst2)
{
cout << "SAME" << endl;
}
else
{
cout << "DIFFERENT" << endl;
}
}
return 0;
}
//将一个字符串转换成它的缩写形式的字符串
string convertToAbbreviation(string str)
{
string dst;
dst = str[0];
for (int i = 0; i < str.length(); i++)
{
if (str[i] == ' ')
{
dst += str[i + 1];
}
}
return dst;
}
另外一种解法:
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
#include<iterator>
#include<algorithm>
using namespace std;
string convertToAbbreviation(string str);
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("D:\\in.txt", "r", stdin);
freopen("D:\\out.txt", "w", stdout);
#endif // ONLINE_JUDEG
int t(0);
int n(0),m(0);
string ssa,ssb,s;
cin >> t;
for (int i = 0; i < t; i++)
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> s;
ssa += s[0];
}
cin >> m;
for (int i = 0; i < m; i++)
{
cin >> s;
ssb += s[0];
}
if (0 == ssa.compare(ssb))//compare函数相等返回0,大于返回1,小于返回-1
{
cout << "SAME" << endl;
}
else
{
cout << "DIFFERENT" << endl;
}
}
return 0;
}