이것은 간단한 알고리즘 질문입니다.하지만 효율적이고 우아한 솔루션을 찾을 수없는 것 같습니다.배열 집합에서 가장 작은 데이터에 해당하는 인덱스를 확인하십시오.
우리는 해당 배열의 색인을 나타내는 3 개의 int (Aa, Ab, Ac) 및 3 개의 커서 (Ca, Cb, Cc) 배열을 가지고 있습니다. 가장 작은 값을 가리키는 커서를 식별하고 증가 시키려고합니다. 이 커서가 이미 배열 끝에 있으면 커서를 제외하고 두 번째로 작은 값을 가리키는 커서를 증가시킵니다. 배열의 끝 부분에 커서가 하나 밖에없는 경우이 커서가 증가합니다.
내가 올 수있는 유일한 해결책은 복잡하거나 최적이 아닙니다. 예를 들어, 나는 항상 거대한 if ... else로 끝납니다 ...
누구나이 문제에 대한 깔끔한 해결책을 볼 수 있습니까?
저는 C++로 프로그래밍하고 있지만 의사 코드 또는 원하는 언어로 자유롭게 토론 할 수 있습니다.
무엇이 솔루션에 대해 당신에게
Aa [Ca] == Ab [Cb]> Ac [Cc]이고 Ca 또는 Cb가 해당 배열의 끝을 가리키지 않는다면 어떻게 될까요? Ca 또는 Cb를 증가합니까? – MarcoS
그래프 문제가 아닌가요? Dijkstra 알고리즘은 최단 경로를 찾을 수 있습니까? – Bytemain
여기에 세 개의 배열로부터 숫자의 스트림을 출력하는 것이 가장 낮은 순서로되어있는 경우 세 배열을 모두 큰 벡터에 넣고 std :: sort를 수행하면됩니다. – Patrick