2016-09-22 2 views
1

저는 인터뷰 준비 질문을 해왔습니다.이 질문은 제가 솔루션을 구현하는 방법을 잘 모르기 때문에 문제가있었습니다. 여기에 설정이 있습니다. 8x8 격자의 글자와 단어 목록이 주어지며 목록에서 가장 긴 단어를 반환해야합니다. 가장 긴 단어는 그리드의 문자로 시작한 다음 기사가 그리드를 그리며 체스에서. 당신이 [ "단어", "문자열", "시험"] 다음과 같은 격자를 목록이 있다면 예를 들어,이는 시작에 의해 형성 될 수 있기 때문에인터뷰 격자에서 준비 단어

Y W E Z T N U W 
O P A A C Q G F 
T E L Z X C V B 
N M M W F R T O 
U I O N A S D F 
B E J O L Z V C 
T B N M Q W E R 
T A S G X Z R S 

는 그런 다음, "테스트"를 반환 'T'를 그리드의 왼쪽 하단 모서리, 2를 올리고 'E'를 얻으려면 오른쪽 하나를, 'S'를 얻으려면 2와 오른쪽 하나를 뛰어 오른 다음 두 개를 올리고 ' T '이고 다른 단어는이 격자에 형성 될 수 없다.

브랜치와 바운드 알고리즘을 사용한다고 생각하지만,이를 설정하는 방법에 대해서는 완전히 분실했습니다. 아무도 도와 줄 수 있습니까? 파이썬으로 구현하려고합니다.

참고 : 그리드에서 문자를 반복 할 수 있습니다. 즉, 동일한 문자를 원하는만큼 여러 번 사용할 수 있습니다.

답변

0

내 해결책은 배열의 모든 단어에 대해입니다. 행렬을 반복하여 첫 번째 문자를 찾은 다음 숨은 첫 번째 검색 (BFS) 또는 첫 번째 문자의 이웃에 대한 깊이 첫 번째 검색 (DFS)을 사용할 수 있습니다. 이 경우에는 기사가 올라갈 수있는 8 가지 위치가됩니다). 큐 또는 스택을 각각 사용하여 BFS 또는 DFS를 반복적으로 구현할 수 있습니다.