我在java中寻找一个方法,让x的元素的所有组合一次取m。
请注意所有提出的算法(参见下面的链接和代码)到目前为止只使用递归函数策略打印组合列表并且不将结果保存在数组中
例如,如果str[] data={"a","b","c","d"}
带有m=2
(请注意:数据和m是方法的参数)
该方法返回一个数组:
(a,b
a,c
a,d
b,c
b,d
c,d)
以下代码再次打印它们而不是将它们保存在数组中:
import java.util.Arrays;
public class Combination {
public static void main(String[] args){
String[] arr = {"A","B","C","D","E","F"};
combinations2(arr, 3, 0, new String[3]);
}
static void combinations2(String[] arr, int len, int startPosition, String[] result){
if (len == 0){
System.out.println(Arrays.toString(result));
return;
}
for (int i = startPosition; i <= arr.length-len; i++){
result[result.length - len] = arr[i];
combinations2(arr, len-1, i+1, result);
}
}
}