HDU_1073

问题描述
题目大意:给出两组数据,分别对应输出和答案,让你判断你的输入是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;
    }
}
发布了7 篇原创文章 · 获赞 0 · 访问量 49

猜你喜欢

转载自blog.csdn.net/Doneoll/article/details/104479404