package cn.iocoder.yudao.framework.common.thealgorithms.backtracking;

import java.util.List;
import java.util.TreeSet;


/**
 * 查找 1...n 的所有长度为 k 的排列组合
 * 作者 TheClerici (<a href="https://github.com/TheClerici">git-TheClerici</a>)
 */
public final class ArrayCombination {
    private ArrayCombination() {
    }
    private static int length;

    /**
     * 通过创建一个数组并在 Combination.java 中使用回溯算法来查找 1..n 的所有组合
     * @param n 数组的最大值。
     * @param k 组合的长度
     * @return 长度为 k 的所有组合的列表。如果 k == 0，则返回 null。
     */
    public static List<TreeSet<Integer>> combination(int n, int k) {
        if (n <= 0) {
            return null;
        }
        length = k;
        Integer[] arr = new Integer[n];
        for (int i = 1; i <= n; i++) {
            arr[i - 1] = i;
        }
        return Combination.combination(arr, length);
    }
}
