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=0112
或s=abcd=0000
或s=abdc=1320
等。
我希望計算多少組合(無重複)可以串取。
我寫了一個算法,探測所有不同的組合和丟棄重複,但我想了解,如果可以構造一個公式可以退回相同的結果(不是所有有效的組合列表,但只有它們的數量)。
謝謝
不,這不是因爲4. – Flavio 2012-08-04 19:59:55
該死的看錯了問題... – 2012-08-05 11:35:02
不,它不是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