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

二维数组wall相邻2计数逻辑错误:代码问题求助

问题排查与修正

嘿,我帮你找到代码里的问题啦,核心是一个运算符写错的低级错误,直接导致了hole的异常扣减:

核心错误点

  • 第二个循环的判断条件完全写错了:你把比较相等的==写成了赋值的-=!原代码里的wall[R-2][i]-=2会直接修改数组中wall[R-2][i]的数值(把它减2),然后判断这个修改后的值是否非零——这完全偏离了你原本要检查「当前位置是2且右侧相邻是2」的需求。这个错误会触发大量不符合条件的hole--操作,这就是hole实际减了7而非预期4的主要原因。

其他逻辑的合理性确认

  • 第一个循环的逻辑是对的:遍历wall[0][C-2]到wall[R-3][C-2],检查每个位置和下方相邻位置是否都是2,完全符合需求。
  • 最后的重复修正逻辑也没问题:当wall[R-2][C-2]的左侧和上方都是2时,它会在两个循环里各被多扣一次,加1修正重复扣减是正确的。

修正后的代码

// 处理列方向:检查wall[0][C-2]~wall[R-3][C-2]的下方相邻2
for(int i=0;i<R-2;i++){ 
    if(wall[i][C-2]==2 && wall[i+1][C-2]==2) 
        hole--; 
}
// 处理行方向:检查wall[R-2][0]~wall[R-2][C-3]的右侧相邻2
for(int i=0;i<C-2;i++){ 
    // 将错误的-=改为正确的==,恢复判断逻辑
    if(wall[R-2][i]==2 && wall[R-2][i+1]==2) 
        hole--; 
}
// 修正重复减的情况
if(wall[R-2][C-2]==2 && wall[R-2][C-3]==2 && wall[R-3][C-2]==2) 
    hole++; 

你试试这个修正后的代码,应该就能得到预期的hole减4的结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:11:53