내 친구가이 코딩 퍼즐을 나에게 공유했는데 막혔습니다. 여기에 퍼즐이 있습니다 :동굴에있는 도둑이 퍼즐을 쓰고 있습니다.
동굴이 배열 인덱스 으로 표시되는 동굴과 도둑의 배열을 상상해보십시오. 매일 도둑은 동굴을 방향으로 움직일 수 있으며 이전에 방문한 동굴로 돌아갈 수는 있지만 을 움직여 야합니다.
확인하려면 동굴 순서로 하루에 하나씩 목록이 제공됩니다. 그 이동으로 적어도 수표 중 하나에서 도둑을 잡을 수 있는지 확인하십시오. 내가 함께 왔어요 무엇
:
동굴 배열을 가정은 0 인덱스입니다. 그런 다음 "경계" 점을 인덱스 1과 len (동굴) - 2로 정의 할 수 있습니다. 경계 지점에서 시작하고 다음 경계 지점까지 선형으로 스윕 한 다음 경계 지점을 다시 확인하십시오 하나에 도달 한 후 을 다른 경계 지점으로 되돌려 보내면 도둑을 잡을 수 있습니다. 예를 들어 우리 동굴의 길이가 5 인 경우 :
123321 및 123123은 도둑이 모두 잡히는 것을 보장합니다.
그러나이 템플릿은 완전한 템플릿이라고 생각하지 않으며 여전히 작동하는 다른 스키마가있을 수 있습니다. 누군가 다른 아이디어가 있는지 궁금 해서요! 다음
이 질문은 퍼즐에 대한 알고리즘 솔루션에 관한 것이지 코드 문제에 관한 것이 아니기 때문에 주제를 벗어난 것으로 닫으려고합니다. –
나는 동의하지 않는다. 이것은 알고리즘 지향적 인 질문이며, OP는 그것을 해결하기위한 알고리즘에 대해 질문하고 있습니다. 알고리즘 질문은 주제에 관한 내용이 많습니다. – amit
@TopologicalSort no. 도둑이 동굴 1에서 시작하여 1에서 0으로 앞뒤로 간다면 어떨까요? – Lowblow