2012-04-23 41 views
2

我確信這很簡單,但我很難找到一個方法來做到這一點。基本上,如果我有一個P柱和V^P排的數組,我怎樣才能填充所有的組合,也就是說,基本上,所有可能的P數的基數爲V.例如,對於P = 3和V = 2:爲給定的基數和位數生成所有可能的排列

000 
001 
010 
011 
100 
101 
110 
111 

請記住,這是一個2維數組,而不是一個整數數組。

對於P = 4和V = 3。

0000 
0001 
0002 
0010 
0011 
0012 
.... 

有了這個數組的生成,剩下的工作,我試圖devolop是微不足道的。所以有一些代碼/提示如何做到這一點將不勝感激。謝謝。

回答

0

以你的例子與P = 3和V = 2,在第一欄,你需要的數字序列:

0, 0, 0, 0, 1, 1, 1, 1 

所以你基本上是用戶需要4 0的後面四個1的。

在第二列中,您需要:

0, 0, 1, 1, 0, 0, 1, 1 

所以,你想要兩個0的後面是兩個1的,其次是同一次。一般來說,在第n列中,需要每個數字的V ^(P-n),重複V ^(n-1)次。

例如當P = 3和V = 2:

第1欄:我們需求V ^(PN)= 2 ^(3-1)=每個數字4,重複V ^(N-1) = 2^0 = 1次:

[0, 0, 0, 0, 1, 1, 1, 1] 

列2:我們需求V ^(PN)= 2 ^(3-2)=每個數字2,重複V ^(N-1)= 2^1 = 2倍:

[0, 0, 1, 1], [0, 0, 1, 1] 

第3欄:我們需求V ^(PN)= 2 ^(3-3)=每個數字1,重複V ^(N-1)= 2^2 = 4次:

[0, 1], [0, 1], [0, 1], [0, 1] 

生成該序列的一些Python代碼:

def sequence(v, p, column): 
    subsequence = [] 
    for i in range(v): 
     subsequence += [i] * v**(p - column) 
    return subsequence * v**(column - 1) 
相關問題