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

C++多数组重复元素检测问题:洛书幻方checkUnique函数异常排查

洛书幻方唯一性检测函数修正方案

你的checkUnique函数存在三个关键错误,导致无法正确检测元素唯一性:

错误分析

  1. 合并数组笔误:
    初始化combinedArray时,误将arrayRow2[2]写成了arrayRow3[2],导致合并后的数组包含重复的arrayRow3[2]元素。比如输入1 2 3 4 5 6 7 8 9时,合并数组会变成[1,2,3,4,5,9,7,8,9],直接出现重复值。

  2. 循环起始值错误:
    内层循环j从counter开始,需要额外判断j != counter,且会导致重复比较同一元素。正确的做法是让j从counter + 1开始,只比较当前元素之后的所有元素。

  3. 返回时机错误:
    原代码在每次内层循环的第一次迭代就执行return false,导致函数提前退出,完全没有完成所有元素的检查逻辑。

修正后的代码

以下是修复后的函数(假设函数返回true表示存在重复元素,返回false表示所有元素唯一,匹配你的调用场景):

bool checkUnique(int arrayRow1[], int arrayRow2[], int arrayRow3[], int TOTAL_NUM)
{
    // 修复合并数组的笔误,正确包含arrayRow2的第三个元素
    int combinedArray[] = { arrayRow1[0], arrayRow1[1], arrayRow1[2],
                            arrayRow2[0], arrayRow2[1], arrayRow2[2],
                            arrayRow3[0], arrayRow3[1], arrayRow3[2] };
    
    // 遍历每个元素
    for (int counter = 0; counter < TOTAL_NUM; counter++)
    {
        // 从当前元素的下一个位置开始比较,避免重复检查
        for (int j = counter + 1; j < TOTAL_NUM; j++)
        {
            if (combinedArray[counter] == combinedArray[j])
            {
                // 发现重复,立即返回true
                return true;
            }
        }
    }
    // 所有元素检查完毕,无重复则返回false
    return false;
}

如果你的调用逻辑需要函数返回true表示所有元素唯一,只需调换返回值:

  • 发现重复时返回false
  • 循环结束后返回true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:55:25