You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CS50 pset6 DNA代码跑通small.csv 运行large.csv时STR计数错误求助

核心错误定位

你代码的问题出在STR计数逻辑不符合题目要求:
CS50 DNA问题要求统计的是单种STR序列的最长连续重复次数,但你当前的实现是统计该STR在整条DNA序列中所有出现的总次数,不校验是否连续。这就是小样本测试刚好通过、大样本测试出错的核心原因:小样本里STR的出现刚好都是连续的,总出现次数等于最长连续次数,大样本里存在大量非连续的STR片段,你的统计结果就会远大于正确值。

修正代码

仅需要替换你原有的STR计数段即可:

# 原错误计数段替换为以下代码
for STR in Slist:
    max_repeat = 0
    current_repeat = 0
    str_length = len(STR)
    index = 0
    while index < len(text):
        # 匹配到对应STR
        if text[index:index+str_length] == STR:
            current_repeat += 1
            max_repeat = max(max_repeat, current_repeat)
            # 跳一个STR长度,判断下一段是否连续匹配
            index += str_length
        else:
            # 连续中断,重置当前计数
            current_repeat = 0
            index += 1
    STRdict[STR] = max_repeat

替换后重新运行,small.csv和large.csv的测试结果都会符合预期。

内容的提问来源于stack exchange,提问作者Jirapath Tharasena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:51:03