Por la cantidad de números en la lista, haciendo todas las posibles combinaciones de sumas posiblemente pasaríamos varios casos pero estaríamos lejos de pasarlos todos. En vez de esto, es mejor resolverlo por programación dinámica. Creamos un arreglo en el que guardamos si una suma dada la hemos realizado o no. Empezamos marcando a todas las sumas como no encontradas. Después marcamos a la del primero número como encontrada. Con los siguientes números, marcamos a la suma de dicho número con las sumas que habíamos encontrado antes.

Tomando los datos de la entrada ejemplo, primero utilizamos el primer sumando con lo que marcaríamos el 1 (único sumando); seguimos con el 2, con el que marcaríamos el 2 (único sumando) y el 3 (con el 1 que teníamos); terminamos con el 3, con el que marcaríamos otra vez el 3 (como único sumando), y al 4, 5 y 6 (con el 1, 2, y 3 que ya teníamos, respectivamente). Para la respuesta, solo hay contarlos teniendo la precaución de que estén en el rango y que no los hayamos formado con un sumando (como el 1 y el 2).



World of πer