2011-09-06 1 views
0

블록 조각 배열을 취하여 가능한 경우 정렬하는 프로그램을 작성해야합니다. 4 × 4 격자로 사각형을 형성합니다.블록 조각 배열을 가져 와서 가능한 경우 4 x 4 격자로 정사각형 모양으로 배열하는 프로그램

조각은 4 x 4 격자 내에서 어떤 모양이든 될 수 있습니다. 가능하지 않으면 null을 반환해야합니다.

입력 :

Blocks[] pieces = new Blocks[4] 
pieces[0] = new Blocks(1, new int[][]{{1, 1, 1}}) 
pieces[1] = new Blocks(2, new int[][]{{1, 0}, {1, 0}, {1, 0}, {1, 0}}) 
pieces[2] = new Blocks(3, new int[][]{{1, 1, 1}, {1, 0, 1}}) 
pieces[3] = new Blocks(4, new int[][]{{0, 1, 0}, {1, 1, 1}}) 

출력 : 있어서

2 1 1 1 
2 3 3 3 
2 3 4 3 
2 4 4 4 

Please see the explanation for the output here

답변

0

이 퍼즐은 유명한 여왕 퍼즐과 거의 동일하므로 문제를 찾아보고 해결 방법을 확인하고이 새로운 지식을이 퍼즐에 적용 해보십시오.

주요 차이점은 블록이 여왕보다 복잡한 모양이지만 나머지는 완전히 동일하다는 것입니다. 솔루션에

기본 성분은 다음의 작업 방법은 다음과 같습니다

  • 그리드의 특정 위치에서 특정 블록 적합합니까?
  • 그리드의 특정 위치에 특정 블록을 배치하십시오.
  • 은 그리드상의 위치에서 특정 블록을 제거합니다.

이러한 세 가지 작업에 대한 메서드를 작성할 때 일부 역 추적 만 필요하면 작업이 완료된 것입니다.

+0

감사. 나 해보자.. – Srinath

0

다만 무차별를 같이 4 × 4 행렬의 사각형 격자를 리턴한다. 블록의 가능한 모든 위치를 시도하고 작동하는지 확인하십시오. NxN 그리드의 일반적인 문제는 NP 완성이므로 이것이 얻을 수있는 솔루션과 거의 같습니다.

+0

자바 프로그램을 작성하려고하는데, 어떻게하면 짐승이 강제로 확인할 수 있습니까 ?? – Srinath

+0

Brute-forcing은 적합한 것을 찾을 때까지 모든 가능성을 시도 할 수 있음을 의미합니다. 역 추적에 대해 알고 싶으십니까? http://en.wikipedia.org/wiki/Backtracking – Lynch

관련 문제