2011-10-05 2 views
1

정사각형 행렬이 주어지면 각 배열의 행/열에서 둘 이상의 요소를 사용하지 않고 가능한 모든 배열을 찾을 수있는 가장 좋은 방법은 무엇입니까?행렬 내에서 가능한 모든 고유 배열 찾기

0 2 3 
1 2 3 
1 2 0 

그것은 다음과 같이 그것을 통해 갈 것 : enter image description here

을 그리고 그것을 것이라고 출력 배열의 다음 목록 :

123 
123 
023 
123 
120 
020 
과 같이 매트릭스 예를 들어

,

답변

1

각 배열을 숫자의 순열 (0 .. size-1)에 직접 매핑 할 수 있습니다. 이것이 어떻게 작동하는지 보여주기 위해 순열 (2,1,0)은 3 좌표 (2,0), (1,1), (0,2)에 매핑됩니다. 당신이 준 6 예는 매핑을 설명하기 위해

(2,1,0) (1,2,0) (0,2,1) 

(2,0,1) (1,0,2) (0,1,2) 

을하고, 첫 번째 순열 (2,1,0) --> (2,0), (1,1), (0,2)을 할 수 있습니다. 그런 다음 사용하려는 값은 array[2][0], array[1][1], array[0][2]

입니다. 이제 각 순열을 생성하는 방법이 궁금합니다. 몇 가지 알고리즘이 있습니다. 그 중 하나는 java에서 구현됩니다. http://www.merriampark.com/perm.htm