¿Cómo podemos encontrar de manera óptima la suma máxima de números de dos conjuntos (de números) que sea menor que un valor fijo, digamos N?

Suponiendo dos conjuntos de enteros positivos, puede encontrar con bastante facilidad la suma máxima en tiempo lineal. Primero, escanee cada conjunto y recopile los valores distintos debajo de N de cada uno. Esto lleva tiempo constante, ya que ahora tiene una entrada de tamaño constante para trabajar, ya que puede haber un máximo de N valores en cada conjunto. Aplique cualquier algoritmo que desee a estos valores.

Sin aprovechar que el límite N es constante, aún puede hacerlo mejor que un algoritmo cuadrático. Primero, ordena el conjunto más pequeño. A continuación, para cada elemento A en el conjunto más grande, realice una búsqueda binaria en el conjunto más pequeño para encontrar el elemento más grande B en el conjunto más pequeño menor que N – A. Elija el par que encuentre de esta manera que maximice la suma total. Esto lleva tiempo proporcional al tamaño del conjunto más grande multiplicado por el registro del tamaño del conjunto más pequeño.