问题描述
题目大意:给出两组数据,分别对应输出和答案,让你判断你的输入是Accepted
Presentation Error,还是Wrong Answer;
判断规则:
WA:输出数据与答案不一致
PE:输出空格(’ ‘)换行符(’\n’)制表符(’\t’)与输出不一致
AC:输出与答案完全一致
思路:按照判断规则来,先将数据全部读入一个字符串然后将空格,换行符,制表符与数据分开,然后与正确输出的相应部分对比,得出结果.
难点:数据的读入
举例:
START
1 + 2 = 3
END
START
1 + 2 = 3
END
如何将数据完整读入?
利用c++的函数geiline()读入一行数据,利用string重载后的 号将字符串拼接起来
string r="";
while(getline(cin,t))
{
if(t=="END")break;
r+=(t+'\n');
}
关键点:拆分字符串
string x,string y;
for(int i=0;i<r.size();i++)
{
if(r[i]!=' '&&r[i]!='\n'&&r[i]!='\t')
{
x+=r[i];
}
else y+=r[i];
}
剩余部分就是简单的对比环节 pass
AC代码:
#include<string>
#include<iostream>
using namespace std;
void pr(string &x,string &y)
{
string t;
string r="";
while(getline(cin,t))
{
if(t=="END")break;
r+=(t+'\n');
}
for(int i=0;i<r.size();i++)
{
if(r[i]!=' '&&r[i]!='\n'&&r[i]!='\t')
{
x+=r[i];
}
else y+=r[i];
}
}
int main()
{
int n;
cin>>n;
string s;
while(n--)
{
string x1,x2,y1,y2;
cin>>s;
pr(x1,y1);
cin>>s;
pr(x2,y2);
if(x1==x2&&y1==y2)
{
cout<<"Accepted";
}
else if(x1==x2&&y1!=y2)
{
cout<<"Presentation Error";
}
else cout<<"Wrong Answer";
cout<<endl;
}
}