2
我知道有很多類似的問題,我已經閱讀了幾個小時。但他們都沒有滿足我的要求。得到數組數組的第i個組合
我的問題:
給定的n INT數組,他們每個人都有的形式
array_i[] = {0, 1,...,count_i-1}, i = 0,1,...,n-1.
我們選擇每個陣列中的一個號碼進行組合,這種組合的數量是
count_0*count_1*...*count_{n-1}
例如
array_0 = {0,1}
array_1 = {0,1,2}
array_2 = {0,1}
的2 * 3 * 2 = 12種組合是
0| 0 0 0
1| 0 0 1
2| 0 1 0
3| 0 1 1
4| 0 2 0
5| 0 2 1
6| 1 0 0
7| 1 0 1
8| 1 1 0
9| 1 1 1
10| 1 2 0
11| 1 2 1
我想要得到的第i個組合(例如第9個組合是{1,1,1}
),並得到它的效率。我試過了base-n轉換的想法,像這樣Permutation for numbers in C。但它不是有效的,因爲基地必須是最大的count_i
,這可能是不必要的。我也想過使用不同鹼基的想法,但要正確處理關係很困難。
任何建議都是真正的歡迎。
但將你的方法應用到我的例子中,prod_0 = 2,prod_1 = 1,以及9組合是index_0 = 9%2 = 1,9%1 = 0? – linusz
重新定義您的陣列從0運行到count-1;否則你的表達式的組合總數是錯誤的。然後count_i成爲array_i中的元素數量。然後在你的例子中,計數是2,3,2。 –
是的,你是對的。但是現在prod_0 = 6,prod_1 = 2,並且第9個組合的索引是index_0 = 9%6 = 3,9%2 = 1? – linusz