2011-01-28 20 views
5

enter image description herecombinatorics uygulanması ve bulgusu

Bu bulmacanın içinde bir imaj bulundu. Düşünceme göre toplam yol sayısı

2*comb(7,i) for i <- 1 to 7 olmalıdır, burada comb aşağıdaki gibi tanımlanmıştır. Benim yaklaşımım doğru mu? Aşağıda yazılan işlevi alıp almadığım için endişeleniyorum.

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 

Kısa bir süre içinde çok fazla soru sormama aldırmayın. Ben sadece coşkuluyum.

+0

Onun bir hileci sorusu. Sadece 6 çocuk var;) – sizzzzlerz

+0

@sizzzzlerz: Haha, bu yüzden doğru ... – unutbu

cevap

6

7 tane var! Çocukları sıraya koyma yolları (ilk nokta için 7 seçenek, ikinci için 6, üçüncü için 5, vb.)

Her çocuk içe veya dışa bakabilir. Her pozisyon için ekstra bir bit gibi. Yani 2 ** 7 ile çarpın. (yani her nokta için 2 seçenek vardır).

Artık her bir sipariş için, daireyi döndürürseniz, "aynı" siparişi alırsınız. Hepsi aynı siparişi veren 7 dönme hareketi vardır, böylelikle 7'ye bölün.

Cevap 2 ** 7 * 7!/7 = 128 * 6! = 92160.