2 차원 정수 배열이 주어진 경우 모든 요소가 1과 동일하다는 것을 확인하는 방법을 정의하여 직사각형을 만듭니다. 2 차원 배열의 모든 "1"이 직사각형을 구성하는지 확인하는 알고리즘
이
내가 지금까지 해낸 것입니다 :
public static boolean oneRectangle(int [][] a) {
boolean rectangle=true;
int[][] res;
int OneinRow=0; //keeps track of how many ones there are in the row
int OneinColoumn=0; //keeps track of how many ones there are in a coloumn
for(int i=0; i<a.length; i++) {
for (int j = 0; j < a[0].length; j++) {
while (a[i][j] == 1) {
i++;
OneinRow++;
}
while (a[i][j] == 1) {
j++;
OneinColoumn++;
}
}
}
res = new int[OneinRow][OneinColoumn];
for(int k=0; k<res.length; k++)
for(int l=0; l<res[0].length; l++)
if(res[k][l] != 1)
rectangle = false;
return rectangle;
}
가 예상대로 작동하지 않기 때문에
f = new int[][] {
{1,2,3,4}, //1 in position 0
{2,1,4,5}, //1 in position 1
{3,4,5,6}};
반품 true
대신 false
.
어떻게 수정하고 알고리즘을 개선 할 수 있습니까?
참고로, 'res' 테이블에는 생성 후 0 만 포함되며 다른 것으로 채우지는 않습니다. – krzydyn
알고리즘을 직접 설명해보십시오. 구현하려고합니다. – krzydyn
@krzydyn 고맙습니다. 해상도 배열에 아무 것도 없습니다. 고치겠습니다. – Daniele