PC110305/UVA10188

根据我的规律,每天solved3题就感觉不行了~但是今天好像做水题做上瘾了,不过PC的题目尽管水,水得还是可以让人有进步。

这题OJ自动测评真心坑,题目看起来十分简单,测评返回三种可能:

Accepted

Wrong Answer

Presentation Error

当输出字符完全相等,就是AC

当输出的数字字符按序相等,就是PE,

否则就是WA

坑爹就是坑在这个PE问题。

比如

3

1

1

1

1

111

这是PE的答案。。。不能仅仅是按行来比较,所以我,直接就拼在一个字符串了~当然,不拼也是很简单的。

/*******************************************************************************/
/* OS           : 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 UTC 2013 GNU/Linux
 * Compiler     : g++ (GCC)  4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
 * Encoding     : UTF8
 * Date         : 2014-03-30
 * All Rights Reserved by yaolong.
*****************************************************************************/
/* Description: ***************************************************************
*****************************************************************************/
/* Analysis: ******************************************************************
*****************************************************************************/
/*****************************************************************************/

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<stack>
using namespace std;
#define AC 0
#define WA 1
#define PE 2
void fun(int a,int cases)
{
    switch(a)
    {
    case AC:
        cout<<"Run #"<<cases<<": Accepted"<<endl;
        break;
    case PE:
        cout<<"Run #"<<cases<<": Presentation Error"<<endl;
        break;
    case WA:
        cout<<"Run #"<<cases<<": Wrong Answer"<<endl;
        break;


    }

}
bool isPE(string str1,string str2)
{
    int i,flag=1;
    int len1=str1.length(),len2=str2.length();
    stack<int> stk1,stk2;
    for(i=0; i<len1; i++)
        if(str1[i]>='0'&&str1[i]<='9')
        {
            stk1.push(str1[i]-'0');
        }


    for(i=0; i<len2; i++)
        if(str2[i]>='0'&&str2[i]<='9')
        {
            stk2.push(str2[i]-'0');
        }
    if(stk1.size()!=stk2.size())return 0;
    while(!stk1.empty())
    {
        if(stk1.top()!=stk2.top()) flag=0;
        stk1.pop();
        stk2.pop();

    }

    return flag;
}
int main()
{

    int n,i,m;
    int cases=0;
    vector<string> v_ans,v_sub;

    while(cin>>n&&n)
    {

        cases++;
        v_ans.clear();
        v_sub.clear();
        v_ans.resize(n);
        getchar();
        for(i=0; i<n; i++)
        {
            getline(cin,v_ans[i]);
        }

        cin>>m;
        getchar();


        v_sub.resize(m);
        for(i=0; i<m; i++)
        {
            getline(cin,v_sub[i]);
        }

        int nmin=n>m?m:n;   //取数据最少比较
        int nmax=n>m?n:m;


        v_sub.resize(nmax);
        v_ans.resize(nmax);


        for(i=0; i<nmin; i++)  //AC
        {
            if(v_ans[i]!=v_sub[i])
            {
                break;
            }
        }
        if(i==nmin&&m==n)
        {

            fun(AC,cases);
            continue;

        }
        string tmp_a="",tmp_b="";
        for(i=0; i<nmax; i++){
           tmp_a=tmp_a+v_ans[i];
        }
        for(i=0; i<nmax;i++){
           tmp_b=tmp_b+v_sub[i];
        }


        if(isPE(tmp_a,tmp_b))
        {
            fun(PE,cases);
            continue;
        }

        fun(WA,cases);


    }




    return 0;

}



再附上一些测试数据

2
The answer is: 10
The answer is: 5
2
The answer is: 10
The answer is: 5
2
The answer is: 10
The answer is: 5
2
The answer is: 10
The answer is: 15
2
The answer is: 10
The answer is:  5
2
The answer is: 10
The answer is: 5
3
Input Set #1: YES
Input Set #2: NO
Input Set #3: NO
3
Input Set #0: YES
Input Set #1: NO
Input Set #2: NO
1
1 0 1 0
1
1010
1
The judges are mean!
1
The judges are good!
1
asd
1
asd   
3
11
11
11
1
111111
3
11
12
13
4
11
12
13
14
3
11
12
13
4
11
1
2
13
0

测试输出


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值