2011-01-28 14 views
5

enter image description hereimplementazione combinatoria e puzzle

Trovato questo puzzle all'interno di un'immagine. Secondo il mio pensiero il numero totale di modi dovrebbe essere

2*comb(7,i) for i <- 1 to 7 dove comb è definito come segue. Il mio approccio è corretto? Sono preoccupato per il risultato che ottengo e non la funzione scritta di seguito.

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 

Non importa se faccio troppe domande in un breve periodo di tempo. Sono solo entusiasta.

+0

È una domanda trabocchetto. Ci sono solo 6 bambini;) – sizzzzlerz

+0

@sizzzzlerz: Haha, così vero ... – unutbu

risposta

6

Ci sono 7! modi per allineare i bambini (7 scelte per il primo spot, 6 per il secondo, 5 per il terzo, ecc.)

Ogni bambino può essere rivolto verso l'interno o l'esterno. È come un bit in più per ogni posizione. Quindi moltiplicare per 2 ** 7. (cioè ci sono 2 scelte per ogni spot).

Ora per ogni ordine, se si ruota il cerchio, si ottiene lo "stesso" ordine. Ci sono 7 rotazioni che producono tutte lo stesso ordine, quindi dividi per 7.

La risposta è 2 ** 7 * 7!/7 = 128 * 6! = 92160.