ACWING80. Dice (para probar la seguridad de la oferta)

Un dado que lanzan N veces, el total de puntos obtenidos para los s, s es la gama de posibles n ~ 6n.

Lanzar un punto, puede tener múltiples métodos de tiro, por ejemplo tirar 2, lanzar tres puntos, un total de [1,2], [2,1] tirar dos tipos de métodos.

La solicitud de lanzar n veces, n ~ 6n tiro cuántos puntos se tiran método.

Muestra 1
de entrada: n = 1

Salida: [1, 1, 1, 1, 1, 1]

Explicación: Throw 1, el número de puntos posibles es 1-6, un total de seis clases. Cada punto tiene sólo un tipo de método de tiro. La salida [1, 1, 1, 1, 1, 1].
Muestra 2
de entrada: n = 2

Salida: [1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1]

Explicación: tirar dos veces el número de puntos que pueden surgir como 2-12, un total de 11 especies. El número de puntos de cada método puede arrojar son 1,2,3,4,5,6,5,4,3,2,1.

  所以输出[1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1]。

Pensando:
. Es un problema de la mochila completa, un número puede estar compuesto de 1 a 6 estos números Cada número se puede utilizar varias veces, le pregunté cuántos manera la composición de especies.

class Solution {
public:
    vector<int> numberOfDice(int n) {
        vector<vector<int>>f(n + 1,vector<int>(6 * n + 1,0));
        
        f[0][0] = 1;
        for(int i = 1;i <= n;i++) {
            for(int j = 1;j <= i * 6;j++) {
                for(int k = 1;k <= 6;k++) {
                    if(j >= k) f[i][j] += f[i - 1][j - k];
                }
            }
        }
        
        vector<int>ans;
        for(int i = n;i <= n * 6;i++) {
            ans.push_back(f[n][i]);
        }
        
        return ans;
    }
};

Publicados 844 artículos originales · ganado elogios 28 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/tomjobs/article/details/104972723
Recomendado
Clasificación