所以我有一个名为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。
我工作的时间太长了,所以我真的很难看出这段代码出了什么问题。
请帮我找出哪里不对劲。
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.发布于 2019-10-09 21:49:57
在if语句中,if(wall[R-2][i]-=2&&wall[R-2][i+1]==2) hole--;,
你有-=而不是==,我改变了它,它给了我-4,正如你所期望的。
https://stackoverflow.com/questions/58304879
复制相似问题