回 帖 发 新 帖 刷新版面

主题:第49次编程比赛结果

这次的题目,难度没有掌握好,解法太单调了,大家的算法都差不多。是我的责任。 不过幸运的是有很多人参加,谢谢各位捧场。
    本来是一个贴近编译原理的题。考虑到比赛刚恢复就碰上春节延迟一周,为了更多人参加,题目被我简化了好几次,然后加上“<>”后就成了现在这个样子。
    关于同级括号嵌套没有说明,我的本意(())是合法的,可是没有说清楚, 导致很多人误会了。 于是修改了测试数据,不会出现同级括号的嵌套,两种理解都正确。测试结果:

第一轮用20组数据测试(数据附后),28位参加的朋友中,有12位通过。很多朋友没考虑单边括号,很可惜。3楼的redraiment返回值全反,修改后通过。
10    SonicLing    6组数据出错
11    我不太会    7组数据出错
13    dongdong123    运行期错误
14    55560380    9组数据出错
15    bloodybg    7组数据出错
16    iAkiak        2组出错(第12、15组,单边括号)
18    hj36277        栈溢出
23    hazf2008    7
24    独行者        6
25    szh        单边括号
26    笑十三狼    7
27    songfei        6
28    freeeerf    单边括号?
29    ldb2741        9
30    雪光风剑    运行期错误
31    ghbxx2004    6

第二轮:将第一轮的前10组数据连接再重复64次,重复运行1000次,得到的运算时间。
5    euc        297
9    codedog        297
20    crossbow    297
    以上3位似乎用模版比较吃亏。运行时间相差5%内,考虑到clock()和运行时可能有后台程序的误差,可以认为速度是相同的。

4     skybtone    65
3    redraiment    47(那个全局变量实在没必要。应该放到函数里并且初始化,否则重复运行会错。)
*7    bpttc        45
*12    eastcowboy    47
17    rj1985        47
19    xchbcahz    47
21    rickone        45
22    merry05        31
32    ITER        31
    以上9位速度接近,除了4楼之外速度差距都在30%以内,很难取舍。考虑到7楼的bpttc有足够多的说明和注释,并且效率也不错(肯写注释的人太少了,要鼓励)。第49次编程比赛的冠军是:[color=FF0000]bpttc[/color]。大家恭喜他。请 bpttc准备第50次编程比赛。  

    运行环境是AthlonXP2.2G(133*16.5)+1G+VC6 Release。(Debug模式下,以上大部分程序运行时间大约是10倍)。如果对测试和结果有任何异议,请跟帖说明。我会尽快回复。


附:第一轮的测试数据
()
{[(<>)]}
[<>]
[()(<>)]
{}[]()<>
{}{}{[]}<>[()<>(<>)]
<><><><><><><>()()()(){<><><><><><><>()()()()}{[()<>(<>)]}
(<>){}[]()<>{()[()<>]()}
(){(<>)[]()<>}(<>){}[]()<>
{<><><><><><><>()()()()}{[()<>(<>)]}(<>){}[]()<>{()[()<>]()}(){(<>)[]()<>}(<>){}[]()<>

}
{
{([])}
<()>
{}{}{}[](
}[](<>)
{}{}{[]}<>[(()<>){}(<>)]
(){(<>){}[]()<>}[(<>){}[]()<>]
(){(<>){}[]()<>}{(<>)[]()<>}()[(<>)()[](){}}{(<>)[]()<>]
<><><><><><><>()()()()(<><><><><><><>()[]()){[()<>(<>)]}

回复列表 (共29个回复)

沙发

真详细

板凳

呵呵,如果程序能正确运行返回0
int main(void)
{
        return 0;
}
我也一样。
呵呵。
但运行结果是对的呀。

3 楼

[quote]呵呵,如果程序能正确运行返回0
int main(void)
{
        return 0;
}
我也一样。
呵呵。
但运行结果是对的呀。[/quote]
 
    只需要bool match(char* str)就行, 跟main没关系。 测试时是要重复调用你的match()函数,你没初始化,就容易出大问题。帮你加了一行初始化,算通过了。

    对于main来说,运行正确返回0。 但match函数,正确返回true,错误返回false(也就是0),你刚好反了。测你的时候我改了我的测试代码,也算你通过。

4 楼

呵呵,我知道,我只是随便说说。呵呵。
先恭喜bpttc咯。呵呵。

5 楼

7组数据出错

是不是你给出的第7组数据出错了?
我想看一下我的错误在哪

6 楼

唉,原以为程序写得还不错的,却连正确这一关都没有通过!
恭喜bpttc!

7 楼

能不能把测试用代码贴出来看看哈
我自己的问题已经总结过了

8 楼

我也想看看

9 楼

还需要努力

没有考虑全面

10 楼

空串应该是匹配吧,我的程序是匹配。

不是说是表达式吗,怎么只有括号啊~

我也用的模板啊,为什么速度会吃亏呢?neverPE的标程呢~

我来回复

您尚未登录,请登录后再回复。点此登录或注册