算法-回溯相关问题 生成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");
}
}