leetcode 上的题目是怎么想到的,测试用例是怎么确保是完整覆盖的呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
pythonee
V2EX    程序员

leetcode 上的题目是怎么想到的,测试用例是怎么确保是完整覆盖的呢?

  •  
  •   pythonee 2023-06-06 10:35:39 +08:00 5030 次点击
    这是一个创建于 934 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刷了几十道题后,我突然想到,这些 oj 类的网站,感觉难的不是做题的人,而是出题的人。 他们怎么想出来这些题目,怎么生成测试用例来验证提交程序的准确性和性能要求

    第 1 条附言    2023-06-06 17:22:25 +08:00
    因为我发现我是面向用例编程有时候,自己的代码 bug 就是靠提交多次,改多次后才提交通过的
    18 条回复    2023-06-07 16:10:07 +08:00
    5200721
        1
    5200721  
       2023-06-06 10:51:20 +08:00 via Android
    也不全是所有的题测试案例完整覆盖吧?如果你有正确的程序,把案例丢进去跑不就生成了测试用例了吗
    emSaVya
        2
    emSaVya  
       2023-06-06 10:57:23 +08:00
    近期周赛新题都搞成老题换皮了。越来越没意思。
    gam2046
        3
    gam2046  
       2023-06-06 11:32:34 +08:00
    就是拍脑袋想的。当然也可以说是经验。

    假设出了一道题要求实现 a+b ,那么出题人就会想一下一些可能存在的边界值,比如正数+负数,正数+正数,负数+负数,0+0

    除了边界值以外,常见的还有越界问题,比如超大正数相加,超大负数相加等等。
    xth12138
        4
    xth12138  
       2023-06-06 12:02:27 +08:00
    出题人自己想的,如果你遇到没覆盖的情况,可以去贡献测试用例
    zzzlight
        5
    zzzlight  
       2023-06-06 13:12:47 +08:00
    有没有可能,当你发现问题后你也可以提交用例(众人拾柴火焰高)
    corcre
        6
    corcre  
       2023-06-06 13:15:19 +08:00
    不能, 所以提供测试用例会得金币
    S179276SP
        7
    S179276SP  
       2023-06-06 13:35:25 +08:00
    所以有些题目很傻逼,看踩就知道。
    Tompes
        8
    Tompes  
       2023-06-06 14:26:39 +08:00
    不是一定能全覆盖的
    LavaC
        9
    LavaC  
       2023-06-06 14:32:57 +08:00   1
    所以像周赛就会有 rejudge ,我也试过几次以为是奇思妙想结果只是刚好过了所有测试用例的错误解题代码。
    kachu673
        10
    kachu673  
       2023-06-06 14:33:05 +08:00
    跟高考出题人一样,都是先有的答案,或者先有的一个思路,然后给你不断加难点
    threebr
        11
    threebr  
       2023-06-06 14:35:31 +08:00
    全覆盖在数学上叫做形式化验证。但实际工程里没人这么搞,都是出了 bug 再去补
    pythonee
        12
    pythonee  
    OP
       2023-06-06 17:10:50 +08:00
    @LavaC 原来如此,好想观摩一下
    menc
        13
    menc  
       2023-06-06 20:41:56 +08:00
    如果你打信息学竞赛,就会发现有 case 给错的,有 case 不够导致错误解法也能 ac 的,也有用例太少选手直接暴力提交碰答案的
    txy3000
        14
    txy3000  
       2023-06-06 21:30:20 +08:00
    贪心过了 很可能是 case 不够全 得 dp 然后被 rejudge
    learningman
        15
    learningman  
       2023-06-07 09:45:18 +08:00 via Android
    数据出弱了挺常见的吧
    UMadeleine
        16
    UMadeleine  
       2023-06-07 10:03:04 +08:00 via Android
    我在学校的程序设计竞赛校队呆过,也担任过校赛的出题人。这个其实不能很好地保证,数据弱了是常有的事情。出题不是一个人,会有其它人验题,我们校赛出题是一个人出之后至少两个人验,leetcode 这种网站完全可以增加更多验题人的数量,这样基本能覆盖到(但其实也不能保证每一道题都不出问题)。更好的机制是 codeforces (程序设计竞赛网站)的 hack 机制,通过对提出 hack 的参赛选手给予加分,来鼓励参赛选手找出题目中的问题。
    Asmodeus
        17
    Asmodeus  
       2023-06-07 15:04:05 +08:00
    @LavaC 这就很哲学了,为啥能过了所有测试用例还是错的呢。
    LavaC
        18
    LavaC  
       2023-06-07 16:10:07 +08:00
    @Asmodeus 因为我发到群上的时候有人发了个用例让我测一下,确实没通过。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2474 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 15:25 PVG 23:25 LAX 07:25 JFK 10:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86