내가 뭘 해야할지는 랜덤 블랙 (0)과 화이트 (1) 블록으로 구성된 사각형 보드에서 인접한 흰색 블록 (2로)의 수를 세는 것입니다. . 흰색 블록은 i+1,j
에 있어야합니다. i-1,j
|| i,j+1
|| i,j-1
. 기술적으로 대각선은 계산되지 않습니다. 여기보드 게임에 대한 엉망이 재귀 코드
[1 0 1]
[1 1 0]
[0 1 0]
여기 (0,0)(1,0) and (1,0)(1,1) and (1,1)(2,1)
count == 3
내 코드입니다 : 내가 여기서 뭘하려고하고 무엇을
public int count = 0;
boolean count(int x, int y, int[][] mat)
{
if(x<0 || y<0)
return false;
if(mat[x][y] == 0)
return false;
for(int i = x; i<mat.length; i++)
{
for(int j = y; j<mat[0].length; j++)
{
if(mat[i][j] == 1)
{
mat[i][j] = 0;
if(count(i-1,j,mat))
count++;
if(count(i,j-1,mat))
count++;
if(count(i+1,j,mat))
count++;
if(count(i,j+1,mat))
count++;
}
}
}
return true;
}
짧은 설명 : 나는 하나의를 찾는 것에 대해 갈거야 내가 아래 예제를 제공 한 보드에서 1을 찾았을 때 0으로 변경하고 위, 아래, 왼쪽, 오른쪽 1을 확인합니다. 이것은 인접한 1을 찾을 때까지 계속됩니다. 내가 여기서 누락 된 것은 무엇입니까? 나는 불필요하게 반복하고있는 느낌이 든다.
숙제 용입니까? –
재귀를 사용해야합니까? – twain249
이것은 숙제가 아니며 재귀를 사용해야 할 필요도 없습니다. 방금 생각했습니다. 더 나은 해결책이 있다면, 나는 알고 싶습니다. – noMAD