如題,舉個例子,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...