RBBR, R- 빨강 및 B- 파랑의 문자열이 주어집니다.붉은 색과 파란색 색 줄무늬가 주어지면 클럽끼리의 색을 함께 교환 할 수 있습니다.
색상을 맞추기 위해 필요한 최소 교체 횟수를 알아야합니다. 위의 경우 RRBB 또는 BBRR을 얻으려면 대답은 1
이됩니다.
간단한 정렬은 우리에게 스왑의 수를 줄 것이므로 여기서 부분적으로 정렬 된 배열을 정렬하는 알고리즘이 유용 할 것이라고 생각하지만, 스왑의 수는 minimum
입니다.
아이디어가 있으십니까?
이것은 this에 따른 Microsoft 인터뷰 질문입니다.
다이내믹 프로그래밍과 A * 스타일 패스 파인딩 같은 냄새가 유용 할 것입니다. – Phrogz
저는 많은 색상의 볼을 분류하는 데 필요한 최소 스왑 수의보다 일반적인 문제에 관심이 있습니다. 내가 대답 한 알고리즘은 볼 수에 선형이지만 가능한 수의 대상 문자열이 색의 순열이므로 색 수를 계승합니다. 더 좋은 방법이 있습니까? –
@ Null Set : @bronzerbeard는 3 색 문자열을 정렬하는 http://en.wikipedia.org/wiki/Dutch_national_flag_problem을 인용하여 답변을 작성했습니다. 아마 그것이 출발점이 될 수 있습니다. –