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

C++二维数组实现木质数字轮盘拼图求解未找到有效解问题排查

问题排查点
  • 核心逻辑错误:数组比对方式不对:C/C++中直接用Sum != The_Grail比较的是两个数组的首内存地址,而非数组内部的元素值,所以不管每列总和是否符合50的要求,该判断永远为真,永远不会触发SUCCESS的分支,这是你跑遍所有组合都找不到解的最主要原因。正确写法需要遍历16个元素逐一比对,或者先判断总总和sum_Total == 800快速过滤,再逐列验证数值。
  • 冗余死循环:main函数外层的while(true)完全多余,所有可能的配置只有16^4=65536种,你运行到75000次说明已经完整遍历所有组合至少一轮,重复跑没有任何意义。
  • 控制台IO拖慢运行效率:你现在每次迭代都打印大量内容,控制台IO的耗时是计算逻辑的上千倍,建议排查阶段先把所有打印逻辑注释,只在找到符合总总和800的配置时再打印内容,跑完所有组合只需要几毫秒。
  • 轮盘转动逻辑验证:你当前每组轮盘的两行是分别调用turnDial转动,虽然当前写法下每次各转1次能保证同步,但建议封装为组转动函数,避免后续调整出现偏移不同步的问题;同时要确认turnDial的转动方向和实际轮盘的偏移方向一致,方向写反也会导致所有配置和实物不匹配。
  • 取值层级验证:需要确认你data_Output的取值优先级和实物堆叠顺序一致,现在的逻辑是上层有值就取上层、空位取下一层,如果和实际轮盘的上下层覆盖规则相反,也永远找不到匹配的解。

修正参考代码(数组比对部分)

// 替换原有checkSum函数末尾的数组比较逻辑
bool isSuccess = true;
for(int i = 0; i < length; i++){
    if(Sum[i] != target_Column_Total){
        isSuccess = false;
        break;
    }
}
if(isSuccess){
    // 找到解再打印全量配置即可
    cout << "SUCCESS!" << "\n\n";
    exit(888);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:42:01