【模拟+字符串处理】HDU-1073 Online Judge

本文介绍了一种用于ACM编程竞赛中判断选手输出是否正确的算法。通过对比实际输出和预期输出,去除空白字符后再进行比对,最终给出AC、PE或WA的评判结果。深入解析了ACM赛制中的输出形式,包括Accepted(AC),Presentation Error(PE),Runtime Error(RE),Wrong Answer(WA)等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注解

1、模拟题,模拟输入过程,字符串处理。
2、用两个数组分别保存实际输出和正确输出,首先比较两个字符串是否相同,若不相同,分别将两个数组的空格、Tab键、回车等都去掉,再去比较两个字符串是否相同。若还是不同,则输出WA;如果去掉后相同,输出PE;如果一开始就相同,输出AC。
3、详细了解ACM赛制中的几种输出形式:AC,PE,RE,WA等。

代码

#include <iostream>
#include <sstream>

using namespace std;

int stringToInt(string s) {
    stringstream ss;
    ss<<s;
    int n;
    ss>>n;
    return n;
}

string str[2];
string tmp[2];
string replaceStr[2];

void input() {
    for(int j=0; j<2; j++) {
        tmp[j] = "";
        str[j] = "";
        getline(cin, tmp[j]);
        while(tmp[j].compare("END")) {
            if(tmp[j].compare("START")) {
                str[j] += tmp[j] + "\n";
            }
            getline(cin, tmp[j]);
        }
    }

    for(int j=0; j<2; j++) {
        replaceStr[j] = "";
        for(int k=0; k<str[j].length(); k++) {
            if(str[j].at(k)!=' ' && str[j].at(k)!='\t' && str[j].at(k)!='\n') {
                replaceStr[j] += str[j].at(k);
            }
        }
    }
}


int main() {

    string s;
    getline(cin, s);
    int N = stringToInt(s);

    for(int i=0; i<N; i++) {
        input();
        if(str[0].compare(str[1])) {
            if(replaceStr[0].compare(replaceStr[1])) {
                cout<<"Wrong Answer"<<endl;
            } else {
                cout<<"Presentation Error"<<endl;
            }
        } else {
            cout<<"Accepted"<<endl;
        }
    }

    return 0;
}

结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值