如题,举个例子,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) {
if (count == maxCount) {
System.out.println(result);
return;
}
for (int i = index; i < charArray.length; i++) {
combinationTest(charArray, i + 1, count + 1, maxCount, result + charArray[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