은 문제가 무엇인지, 그냥 if 문 때문에 얼마나 많은 사람들이 0
동일한 지 확인 최대 4 개 가능한 이웃이있을 수처럼 넣어해야합니다. 하지만 이것만으로는 충분하지 않습니다. 각 if 문에 하나 이상의 조건을 추가하면됩니다. 조건은 검사하려는 이웃이 가능한지 아닌지입니다.
즉 총 4 개의 이웃입니다.
1 대각선 이웃 : x-1
, y-1
2 대각선 이웃 : x-1
, y+1
3 대각선 이웃 : x+1
, y+1
4 대각선 이웃 : 기본 셀의 좌표는 X, 다음 Y 경우 x+1
는 y-1
이들은 모두 4 개의 대각선 이웃 좌표이지만 확인해야 할 마지막 사항은 그들이 채권에서 벗어나는지 여부입니다. 예를 들어 1 대각선 이웃을 확인하기 위해 내가 할 것 :
if((x-1)>0 && (y-1)>0){
//and then check here if that block is = `0`
}
당신은 그들이 NUM 미만 여부를 확인해야합니다 y+1
x+1
을 말하거나 가진 다른 위해를. 마찬가지로 나는 3 대각선 이웃을 확인하려면 :
if((x+1)<NUM && (y+1)<NUM){
//and then check here if that block is = `0`
}
업데이트 :What do you mean by check here if that block is = 0?
당신이이 대각선 주변 블록은 당신이해야 할 것입니다 0
에 동일인지 아닌지 확인하려면 그것은 반복에서.여기 방법 :
public void fun(int[][] grid) {
for(int row = 0; row < NUM; row++) {
for(int col = 0; col < NUM; col++) {
if((grid[row][col] % 2) == 0) {
grid[row][col] = 0;
}
}
}
for(row = 0; row< NUM; row++){
for(int col = 0; col < NUM; col++) {
int count = 0;
// To check for the 1st Diagonal Neighbor
if((row-1)>0 && (col-1)>0){
if(grid[row-1][col-1]==0){
count++;
}
}
//Similarly for 2nd, 3rd and 4th Diagonal Neighbors
//and then
grid[row][col]=count;
}
}
}
업데이트 2 :
코드 블록은 다음과 같이 될 것이다 3 대각선 이웃을 말할 경우 :
if((row+1)<NUM && (col+1)<NUM){
if(grid[row+1][col+1]==0){
count++;
}
}
대답 최종 개인 정적 INT NUM = 6 ;
public void fun(int[][] grid) {
for(int row = 0; row < NUM; row++) {
for(int col = 0; col < NUM; col++) {
int counter = 0;
if((row - 1) > 0 && (col - 1) > 0) {
if(grid[row - 1][col - 1] == 0) {
counter++;
}
}
if((row - 1) > 0 && (col + 1) < NUM) {
if(grid[row - 1][col + 1] == 0) {
counter++;
}
}
if((row + 1) < NUM && (col - 1) > 0) {
if(grid[row + 1][col - 1] == 0) {
counter++;
}
}
if((row + 1) < NUM && (col + 1) < NUM) {
if(grid[row + 1][col + 1] == 0) {
counter++;
}
}
grid[row][col] = counter;
}
}
}
배열 색인에 따라 다르지만 이웃 수도 많거나 적을 수 있습니다. 예를 들어, grid [0] [0]은 오직 하나의 대각선 이웃입니다. 나는 그 일을 설명하는데 어려움을 겪었고, 배열 예외를 벗어났다. 그리고 나는 그들 대부분이 4 개의 대각선 이웃을 가지고 있다고 확신합니다. 그것은 단지 대각선 이웃입니다. –
OP를 편집했습니다. 확인 해봐. 올바른 코드가있는 그림의 맨 위에있는 배열을 사용하면 그림의 아래쪽에 숫자가 생깁니다. –