题目:
给出两个整数n和k,求在1...n这n个数字中选出k个数字的所有组合。
输入:
n = 4 , k = 2
输出:
[ [1 ,2], [1 ,3], [1 ,4], [2 ,3], [2 ,4], [3 ,4], ]
方法一思路:
使用回溯算法求解组合问题
方法一代码如下:
package com.haobi;
import java.util.ArrayList;
import java.util.List;
public class Combinations {
// res数组用来存储所有结果
private static List<String> res = new ArrayList<>();
public static void main(String[] args) {
List<String> list = combine(4, 2);
for(String s : list) {
System.out.print(s+" ");
}
}
/**
* 递归函数
* 求解C(n,k),当前已经找到的组合存储在c中,需要从start开始搜索新的元素
* @param n 示例:4
* @param k 示例:2
* @param statr 从start开始搜索
* @param c
*/
private static void generateCombinations(int n, int k, int start, ArrayList<Integer> c) {
if(c.size() =&#