Combinaciones que suman

Tiempo límite 2 s
Memoria límite 256 MB
Casos de prueba 14
Dificultad Medio Algoritmos
Mostrar (1) Backtracking
Enviar solución

Puntos: 10

Tipo de problema
Lenguajes permitidos
C, C++, Java, Python, Rust

Dados \(n\) números distintos y un objetivo \(t\), encuentra todas las maneras de escribir \(t\) como suma de esos números, donde cada número se puede usar cuantas veces quieras. Dos maneras son iguales si usan los mismos números la misma cantidad de veces (el orden no importa).

Entrada

La primera línea tiene \(n\) y \(t\) \((1 \le n \le 30,\ 1 \le t \le 40)\) y la segunda los \(n\) números distintos \((2 \le c_i \le 40)\). Hay a lo más \(150\) maneras.

Salida

En la primera línea, la cantidad de maneras. Luego una manera por línea: sus números en orden no decreciente, y las maneras en orden lexicográfico.

Ejemplo 1

Entrada

4 7
2 3 6 7

Salida

2
2 2 3
7

Ejemplo 2

Entrada

3 8
2 3 5

Salida

3
2 2 2 2
2 3 3
3 5

Ejemplo 3

Entrada

1 1
2

Salida

0

Basado en el problema 39 de LeetCode, Combination Sum, adaptado a entrada y salida estándar; enunciado redactado para este juez. Es parte de la lista Grind 75 de Yangshun Tay.


Comentarios

No hay comentarios por el momento.