You need to enable JavaScript to run this app. open.kattis纹理分析(Texture Analysis)编程挑战提交答案错误排查
优惠活动
大模型
产品
解决方案
定价
更多

open.kattis纹理分析(Texture Analysis)编程挑战提交答案错误排查

代码问题排查

核心逻辑错误点

  • 拆分片段的过滤规则存在疏漏
    当前代码将字符串按*拆分后,仅保留包含.的片段参与长度一致性校验,直接丢弃了所有长度为0的空片段——这类空片段恰恰对应相邻两个*紧挨着、间隔为0的场景,完全没有被纳入校验范围。
    举个具体场景:遇到形如*...*...**的输入字符串,拆分后得到的片段为["", "...", "...", "", ""],过滤后仅剩["...", "..."],代码会误判所有间隔长度一致,输出EVEN;但实际最后两个相邻*的间隔为0,和前面3个点的间隔不匹配,正确结果应为NOT EVEN。提交时判定错误的第二个样例,大概率就包含这类相邻*无间隔的测试用例。
  • 间隔校验的范围界定错误
    代码直接把按*拆分后的所有非空片段都当成相邻*的间隔参与比对,实际把字符串开头到第一个*的点段、最后一个*到字符串结尾的点段,也错误纳入了间隔校验范围。
    比如仅包含1个*的输入..*...,拆分后得到["..", "..."],代码会因为两个片段长度不匹配判定为NOT EVEN;但按照题目规则,单*的行不存在相邻*对,自然没有间隔不一致的问题,应该判定为EVEN。同理,全是.没有*的行,也会被代码误判为NOT EVEN。
  • 行号变量类型选型不当
    代码用i8类型存储当前处理的行号,这类有符号8位整数的取值范围仅为-128~127。当测试用例总行数超过127时,会触发整数溢出:Debug编译模式下程序直接崩溃,Release编译模式下会出现数值环绕,输出的行号和系统要求的顺序不一致,同样会触发判错。

调整方向

  • 拆分字符串后,无需过滤空片段,仅去掉拆分结果中首段(字符串开头到第一个*的内容)和尾段(最后一个*到字符串结尾的内容),将剩余所有相邻*之间的片段全部收集:
    • 如果收集到的片段数量为0(即行内没有*,或只有1个*),直接判定为EVEN;
    • 如果收集到的片段数量大于0,逐次比对所有片段的长度是否完全一致,一致则为EVEN,否则为NOT EVEN。
  • 行号变量改用usize这类无符号整数类型,覆盖题目允许的最大输入行数,从根源上避免整数溢出问题。

内容的提问来源于stack exchange,提问作者Ethan Suresh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 16:24:03