首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算二维数组中的孔洞

计算二维数组中的孔洞
EN

Stack Overflow用户
提问于 2019-10-09 21:06:53
回答 1查看 893关注 0票数 2

所以我有一个名为wallR的二维数组。

我在这里尝试做的是,每当我看到数组中相邻的2时,我将从名为hole的整数中减去1。

具体来说,在wallR- 2 ~wallR-2(在行中),wall~wallR-3(在列中)中,我将检查2紧跟另一个2。

我知道很难理解我在说什么,所以我给你举个例子。

1 1 1 2 2

1 2 2 2 1 1 2 2

1 2 2 2 1 1 1

1 2 2 2 1 2 2 1

1 1 1 2 2 2 1

1 0 0 0 1 1 2 1

1 0 1 0 1 1 2 1

1 0 0 0 1 1 2 1

在此数组中,我将检查*框和@框中的元素。

在*框中,我将检查元素是否为2,如果是,我将检查该元素下面的元素是否也为2。

在@ box中,我将检查它旁边的元素。

每次我找到它,我都会从整数洞中减去1。

在wallR- 2,如果上面的元素和左边的元素都是2,它可能会被减去2次。

我不希望发生这种情况,所以如果发生这种情况,我会在洞中加1。

1 1 1*2*2

%1%2%2%1%1*%2*2

1 2 2 2 1 1*1*1

%1%2%2%2%1*%2*%1

1 1 1 2 2*2*1

1 0 0 0 1 1*2*1

@

1 0 1 0 1 1@ 2 1

@

1 0 0 0 1 1 2 1

所以我写了代码,但它给了我错误的结果。

我预计它会从洞中减去4。

但是它减去了7。

我工作的时间太长了,所以我真的很难看出这段代码出了什么问题。

请帮我找出哪里不对劲。

代码语言:javascript
复制
for(int i=0;i<R-2;i++){

    if(wall[i][C-2]==2&&wall[i+1][C-2]==2)  hole--;

}

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++; //this is for preventing double subtraction.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-09 21:49:57

在if语句中,if(wall[R-2][i]-=2&&wall[R-2][i+1]==2) hole--;

你有-=而不是==,我改变了它,它给了我-4,正如你所期望的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58304879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档