길이가 같지 않은 정수의 두 벡터가 주어지면 크기 차이를 보완하기 위해 짧은 벡터에 여분의 0이 삽입 된 두 벡터 사이의 해당 숫자 쌍 사이의 최대 값을 선택하여 가능한 최대 결과를 어떻게 결정할 수 있습니까?
예를 들어 다음 두 벡터를 입력으로 고려하십시오.
[8 1 4 5]
[7 3 6]
0과 결과 합계를 삽입하기위한 선택 사항은 다음과 같습니다.
[0 7 3 6] => Maximums: [8 7 4 6] => Sum is: 25
[7 0 3 6] => Maximums: [8 1 4 6] => Sum is: 19
[7 3 0 6] => Maximums: [8 3 4 6] => Sum is: 21
[7 3 6 0] => Maximums: [8 3 6 5] => Sum is: 22
따라서이 경우 알고리즘은 25를 반환해야합니다.
작은 벡터에 0을 배치하는 모든 순열을 계산하여 무차별 적 으로이 작업을 수행 할 수 있지만 (위와 같이) 계산 비용이 많이 들며 한 벡터가 다른 벡터의 크기의 정확히 절반 인 경우 최악입니다.
벡터의 길이가 다른 경우에도 더 긴 벡터의 길이에 비례하여 선형 시간으로 답을 계산하는 방법이 있습니까? 그렇지 않다면, 선택된 계승 순열보다 더 잘 할 수 있습니까?
3
나는 이것을 사용하여 두 문장이 얼마나 비슷한 지 순위를 매기는 것과 관련된 다른 검색 알고리즘의 최대 결과를 계산합니다. 올바른 순서 변경은 허용되지 않습니다.
—
WilliamKF
벡터 길이의 차이에 대해 약속 했습니까? 귀하의 예에서는 0이 하나만 누락되었습니다. 누락 된 0의 수가 적다는 것을 알고 있으면보다 효율적인 알고리즘이 있습니다 (예를 들어, 누락 된 0의 수가 일정한 경우 동적 프로그래밍 알고리즘을 선형 시간으로 실행할 수 있음).
—
DW