組合問題 從M個字元取N個不同字元所有組合

2021-07-10 16:17:26 字數 784 閱讀 7379

如題,舉個例子,m字元為「abcde」,取n=3的字元。

解題思路如下:取a時,則在剩下的取2個字元,不取a,則在剩下的取3個字元,即有c(a, 2) + c'(3).

取三個字元,又可以表示為從c(b, 1) + c'(2).

如此迴圈,直到所需字元數量==n,則停止迴圈,返回結果。

**如下:

public static void combinationtest(char chararray, int index, int count, int maxcount, string result) 

for (int i = index; i < chararray.length; i++)

}

執行結果如下:m = 「abcde」, n= 3

a b c 

a b d 

a b e 

a c d 

a c e 

a d e 

b c d 

b c e 

b d e 

c d e 

存在問題:當m = 「abcdef」, n= 4

執行結果如下

a b e f 應該a b c d是滿足要求的,為什麼沒有找到?

a c d e 

a c d f 

a c e f 

a d e f 

b c d e 

b c d f 

b c e f 

b d e f 

c d e f 

用遞迴實現從M個不同字元中選取N個字元的所有組合

以前做過類似字串的題目,當時覺得字串也能用遞迴來做非常神奇,後來思考了下,覺得只要抓住字串是由乙個個字元組成的,從第乙個字元到最後乙個字元每乙個都可以作為一次遞迴,把index作為引數傳進去就行,以這種思想為指導才把此題解了出來。對於每個字元只有兩種情況,設當前字串指標為x,目標字串指標為y get...

n個元素中取m個元素的組合 排列問題

n個元素中取m個元素的組合 如a則有這些組合 1,2,3,12,13,23,123 我們可以把問題分解如下 1 求陣列中由1到n個元素的組合f n,m m 1 m n n為陣列元素個數 2 對於f n,m 我們從陣列中任意取乙個元素,然後再從剩下的n 1個元素中取m 1個元素,既f n 1,m 1 ...

求 從m個自然數中任取n個數的所有組合

問題 編寫乙個遞迴演算法,找出從自然數1,2,3,m中任取n個數的所有組合。例如 m 5,n 3時,所有組合為543,542,541,532,531,521,432,431,421,321。方法1 設這m個自然數存放在整數陣列a k 中,a i 存放i 1 0 i n 1 可採用遞迴演算法,例如,m...