You need to enable JavaScript to run this app. CodeChef ISREC题目提交Wrong Answer 自测全对求问题排查
优惠活动
大模型
产品
解决方案
定价
更多

CodeChef ISREC题目提交Wrong Answer 自测全对求问题排查

提交ISREC题目Wrong Answer原因排查

核心错误1:多数分支无输出逻辑(最致命问题)

原代码仅在set s大小为1时才会执行输出,其余场景直接返回,导致两类错误:

  • 全0矩阵(所有行无1):s为空,代码无输出,实际应输出Yes
  • 含1的行中1的数量不一致:s存在多个元素,代码无输出,实际应输出No

原代码对应片段:

if(s.size()==1)
{
    // 仅此处有输出逻辑
}
// 无else分支,直接返回

核心错误2:未处理全0矩阵的合法场景

ISREC题目中,所有元素为0的矩阵属于合法场景(对应空矩形),但原代码中flag始终为0,s为空,不会进入任何输出分支,直接返回。

核心错误3:未处理含1行数量不一致的非法场景

若不同行的1的总数不同(例如一行有2个连续1,另一行有3个连续1),说明1无法构成对齐的矩形,应输出No,但原代码s大小大于1,无输出逻辑。


修复方案

补全所有分支的输出逻辑,修改solve()函数循环后的代码段:

// 所有行无1的全0场景
if(flag == 0) {
    cout << "Yes\n";
    return;
}
// 含1行的1数量不一致
if(s.size() != 1) {
    cout << "No\n";
    return;
}
// 校验所有含1行的起始列是否一致
set<int> start;
for(int j=0;j<n;j++)
{
    if(num_consec_ones(row[j],m))
    {
        start.insert(start_index(row[j],m));
    }
}
if(start.size()==1)
{
    cout<<"Yes\n";
}
else{
    cout<<"No\n";
}

潜在优化点

  • 预先存储每行的num_consec_ones结果,避免同一行被重复调用多次函数,提升效率
  • 优化num_consec_ones的判断逻辑:统计行内「1后接0再出现1」的跳变次数,超过1次则判定为非法行,提升可读性
  • 为start_index函数添加默认返回值(如-1),避免未找到1时的未定义行为

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 13:06:04