算法-回溯相关问题 生成n位k进制串,每位上取值为0...k-1 Java版

算法-回溯相关问题 生成n位k进制串,每位上取值为0…k-1

生成所有n位长的k进制串,串中的每位取值为0…k-1

public class KString {
    public static void main(String[] args) {
        int n = 3;
        int k = 4;
        kString(n, k, new int[n]);
    }

    public static void kString(int n, int k, int[] arr) {
        if (n < 1) {
            // n = 1时,下面设置的是n - 1即 0 下角标的值,所以这里的终止条件是n < 1
            printArr(arr);
        } else {
            for (int j = 0; j < k; j++) {
                // 每一次循环就是为当前节点【下角标对应的位置】设置值,值的范围为k(k进制)
                arr[n - 1] = j;
                // 当前节点的值设置好后,就要设置上一个节点的值
                kString(n - 1, k, arr);
            }
        }
    }

    private static void printArr(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }
        System.out.print("\n");
    }

}

你可能感兴趣的:(java,算法,数据结构)