2011-01-28 19 views
5

enter image description hereimplementación combinatoria y rompecabezas

Encontrado este rompecabezas dentro de una imagen. De acuerdo con mi opinión, el número total de formas debe ser

2*comb(7,i) for i <- 1 to 7 donde comb se define de la siguiente manera. ¿Mi enfoque es correcto? Me preocupa el resultado que obtengo y no la función escrita a continuación.

def comb(N,k): 
    if (k > N) or (N < 0) or (k < 0): 
     return 0L 
    N,k = map(long,(N,k)) 
    top = N 
    val = 1L 
    while (top > (N-k)): 
     val *= top 
     top -= 1 
    n = 1L 
    while (n < k+1L): 
     val /= n 
     n += 1 
    return val 

No importa que haga demasiadas preguntas en un corto período de tiempo. Estoy solo entusiasta

+0

Es una pregunta capciosa. Solo hay 6 niños;) – sizzzzlerz

+0

@sizzzzlerz: Jaja, tan cierto ... – unutbu

Respuesta

6

¡Hay 7! formas de alinear a los niños (7 opciones para el primer lugar, 6 para el segundo, 5 para el tercero, etc.)

Cada niño puede mirar hacia adentro o hacia afuera. Eso es como un poco más para cada posición. Así que multiplique por 2 ** 7. (es decir, hay 2 opciones para cada punto).

Ahora para cada pedido, si gira el círculo, obtendrá el "mismo" orden. Hay 7 rotaciones que producen el mismo orden, así que divida por 7.

¡La respuesta es 2 ** 7 * 7!/7 = 128 * 6! = 92160.