Tienes razón en que no hay una forma cerrada, pero sí una solución de función generadora.
En combinatoria, los objetos que se cuentan se llaman particiones que son formas de escribir un número como suma de enteros positivos.
Interpretar $n_k $ como el número de veces que el número entero $k $ aparece en la suma. Entonces $$ \sum_{k =1}^E k \cdot n_k = E $$ significa que los números suman $E $ por lo que nos interesan las particiones de $E $ (nótese que podemos ignorar $k=0$ aquí ya que no afecta a esta suma).
La primera condición, $\sum_{k=0}^E n_k = N $ o, por el contrario $\sum_{k=1}^E n_k \le N $ significa que nos interesan las particiones de $E $ con un máximo de $N $ partes.
Ahora, por desgracia, no hay una solución cerrada para este problema. Sin embargo, existe una función generadora. Primero hacemos una transformación.
Afirmamos que el número de particiones de $E $ en un máximo de $N $ partes es el mismo que el número de particiones de $E $ en partes de tamaño máximo $N $ . Para ver esto, dejemos $m_j = \sum_{k=j}^E n_k $ contar el número de piezas de tamaño mínimo $j $ . Claramente $m_j=0$ para $j>N $ y $$ \sum_j m_j = \sum_j \sum_{k \ge j} n_k = \sum_k \sum_{j \le k} n_k = \sum_k k \cdot n_k, $$ así que dada nuestra partición $(k \cdot n_k)_k $ [es decir, $n_k$ copias de $k$ como $k$ oscila entre $1$ a $E$ ] de $E $ con un máximo de $N $ partes, formamos una partición $(m_j)_j $ de $E $ con partes de tamaño máximo $N $ . Se puede comprobar que se trata de una biyección, por lo que podemos contar con cualquier tipo de partición.
Ahora, la función generadora. Una partición representa la suma (no ordenada) $m_1 + m_2 + ... + m_n = E$ , donde $n$ es el mayor número entero para el que $m_j \ge 1$ . Una forma conveniente de representar estas sumas es mediante la multiplicación de polinomios: $x^{m_1} \cdot x^{m_2} \cdot ... \cdot x^{m_n} = x^{E} $ .
Al multiplicar estos monomios, podemos agruparlos por sus potencias. Así, los términos con $m_j =1$ pueden ser recogidos en el factor $x^{1 \cdot 0} + x^{1 \cdot 1} + x^{1 \cdot 2} + ... + x^{1 \cdot s_1} + ... $ , donde en $1 \cdot s_1$ El $1$ indica que estamos tratando con partes de tamaño $1$ y el $s_1$ lleva la cuenta de cuántos hay. Lo bueno es que se trata de una serie geométrica, por lo que tenemos $$ x^{1 \cdot 0} + x^{1 \cdot 1} + x^{1 \cdot 2} + ... + x^{1 \cdot s_1} + ... = \frac {1}{1-x^1}. $$
Podemos hacer esto para cualquier otro tamaño de pieza, y el factor correspondiente a las piezas de tamaño $j$ será $\frac {1}{1-x^j} $ .
Finalmente, para obtener la función generadora, multiplicamos estos factores entre sí, pues recordemos que sumar las partes corresponde a multiplicar los monomios. Como sólo queremos partes de tamaño hasta $N $ tomamos el producto sobre $1 \le j \le N $ , dando $$ F_N (x) = \prod_{j=1}^N (1-x^j)^{-1}. $$
Esto da una serie de potencias, y el coeficiente de $x^E $ cuenta las particiones de $E $ en partes de tamaño máximo $N $ (o, de forma equivalente, con un máximo de $N $ partes), que es lo que usted busca.
Por último, ¿de qué sirve una función generadora? Pues bien, proporciona una forma sistemática de abordar estos problemas. Tenga en cuenta que la función $F_N $ no sólo codifica la solución a su problema, sino al problema para cada valor posible de $E $ ¡todo a la vez! En términos prácticos, da un algoritmo para encontrar la solución, ya que la serie de potencias se puede calcular de forma eficiente. Los humanos también podemos utilizar herramientas analíticas para extraer la asintótica de la solución, aunque eso no es algo que pueda hacer de buenas a primeras, así que dejaré esa parte a otra persona.