2012-10-13 44 views

回答

2

簡單,寫出數字11100,計算這個數值的排列次數= n! = 5 !, 除以3 1的排列數= 3!和0的排列數= 2! => 5! /(2!* 3!)= 120 /(6×2)= 10

11100 
11010 
11001 
10110 
10101 
10011 
01110 
01101 
01011 
00111 

現在,如果你需要的實際值,對於任意的語言,你沒有其他選擇,只能使用一個回溯算法。

對於這個特殊的情況下,您可以輕鬆地構建一個簡單的算法來生成這個語言: 下面是使用python

def GenerateLanguage(nZeros, nOnes): 
    if nZeros + nOnes == 0: 
     return [''] 
    res = [] # Resulting list, initialize with 1 empty string 
    if nOnes > 0: # If we have 1's left, build all the strings that starts with a 1 
     for l in GenerateLanguage(nZeros, nOnes - 1): 
       res.append('1' + l) 
    if nZeros > 0: # If we have 0's left, build all the strings that starts with a 0 
     for l in GenerateLanguage(nZeros - 1, nOnes): 
       res.append('0' + l) 
    return res 
+0

這就是計算有多少種方法有一個例子。如果我想輸出這些? – stracktracer

+0

我已經添加了一個簡單的算法來找出所有的值。 –