比赛时考虑读入T后cin不读入'\n',需要额外的getline;又考虑getline不会将'\n'读入string,所以加了对读入串size的判断。 先上WA代码。这份代码在本地使用OJ测试数据对拍,可以得到正确结果。
#include <bits/stdc++.h>
using namespace std;
#define sz(x) x.size()
int T;
string s, t, r;
int main()
{
cin >> T;
while (T--)
{
s = "", t = "", r = "";
for (; !sz(s); getline(cin, s))
;
for (auto c : s)
{
if (c != ' ')
t += c;
else
r = t + ' ' + r, t = "";
}
r = t + ' ' + r;
cout << r << endl;
}
return 0;
}
如下是AC代码,其实只修改了数据读入部分。
#include <bits/stdc++.h>
using namespace std;
#define sz(x) x.size()
int T;
string s, t, r;
int main()
{
cin >> T;
getline(cin, s);
while (T--)
{
t = "", r = "";
getline(cin, s);
for (auto c : s)
{
if (c != ' ')
t += c;
else
r = t + ' ' + r, t = "";
}
r = t + ' ' + r;
cout << r << endl;
}
return 0;
}
想请教一下为什么会出现上述情况?
共 1 条回复
这题的命题人和你应该都是用 Windows 生成数据/测试的。
这导致文件中实际的
\r\n被看作\n处理。评测使用 Linux 则不会做此处理。