2012-08-04 74 views
1

假設一個由四個符號組成的字符串,例如s = abcd 僅考慮那些每個符號只有一個實例的字符串,這樣s = bacd和s = dacb都是有效字符串,但s = aabc不是。這給了4!可能的組合。字符串可能的組合

現在,每個符號可以採取的值之間

a = [0, 1] 
b = [0, 1, 2, 3] 
c = [0, 1] 
d = [0, 1, 2] 

因此我最終可能有s=cdab=0112s=abcd=0000s=abdc=1320等。

我希望計算多少組合(無重複)可以串取。

我寫了一個算法,探測所有不同的組合和丟棄重複,但我想了解,如果可以構造一個公式可以退回相同的結果(不是所有有效的組合列表,但只有它們的數量)。

謝謝

回答

0

如果你把一個橫向步長,根據你的榜樣

你的成員是A0,A1,B0,B1,B2,B3 ...... D2,這意味着可能的組合是11 !

+0

不,這不是因爲4. – Flavio 2012-08-04 19:59:55

+0

該死的看錯了問題... – 2012-08-05 11:35:02

+0

不,它不是11!無論是。讓我舉一個例子。如果我有3個符號a = [0] b = [0,1] c = [0,1,2]和s = abc,則s的可能組合是(000,001,002,010,011,012)。對於s = acb,你有(000,001,010,011,020,021)等等。您丟棄重複項(在本例中)剩下16種組合(000,001,002,010,011,012,020,021,100,101,102,110,120,200,201,210)。我發現了一個運行在O(n!)中的算法(在這個例子中是3!),但是我想知道O(n)還是O(1)是可行的。 – Flavio 2012-08-05 13:10:24