2012-10-14 49 views
1

因此,例如,我有:含有Tricky數學! Ñ大小K個陣列(總KXN),需要的大小爲N的所有可能的排列

[1,2,3] and [7,8,9] 

尺寸3的兩個陣列,現在我需要如果找出所有可能的排列我將它們放入一個大小爲N的數組中。它們並非都需要包含(顯然它們不能,因爲數組太小)

規則:每個數字必須位於其自己的索引上新排列(因此,數字1在索引0中,它必須在新排列的索引0中)。 注:數字總是不同

因此,解決方案是(這些陣列的順序並不重要):

[1,2,3] 
[1,8,3] 
[1,2,9] 
[1,8,9] 
[1,2,9] 
[7,2,3] 
[7,8,3] 
[7,8,9] 
[7,2,9] 

但現在我需要爲任何數量的陣列編程這一點;它們將始終具有相同的尺寸。

任何提示?

+0

什麼語言是您使用? –

回答

1

對於每個索引有兩個選擇。因此,有2^3 = 8個排列。解決辦法:

results := [[]] 
for a, b in A, B 
    results := 
     results.map(result => a + result) + 
     results.map(result => b + result) 

其中+表示串聯

+0

這幫我謝謝你! – user1592535

+0

是的,這個數學並不是非常棘手。一般來說它是'K^N'。 –

+1

也@ user1592535一旦你滿意這是最好的答案,你應該通過點擊綠色的選中標記來接受它。 –