El problema es encontrar el número de más que M. Se siente que el producto mayor que M puede ser muy grande, lo cual no es fácil de manejar. Puede considerar convertirlo en el número de subconjuntos cuyo producto sea menor o igual a METRO. (Réstelo del número total de subconjuntos 2 ^ N)
Considere la mochila, de modo que f[x]el representante sea igual al producto del xnúmero de subconjuntos para ser un elemento más dentro de cada matriz de actualización dp nuevamente. La violencia inicial se ve así, independientemente del espacio y el tiempo, está en el nivel del cuadrado.
for(i=1; i<=N; i++)//前 i 个元素for(j=1; j<=M; j++)//乘积为 j
f[i][j]=f[i-1][j]+f[i-1][j/a[i]];
Piense en dónde optimizar. En primer lugar, en realidad hay muy pocos elementos que deben modificarse cada vez. Puede considerar solo el j que debe modificarse; en segundo lugar, debido a que es un conjunto múltiple, puede considerar fusionar y procesando elementos del mismo valor; además de operaciones similares a la matriz rodante, existe el siguiente código.