算法-回溯相关问题-生成所有n位长的二进制字符串 Java版
生成所有n位长的二进制字符串。假设A[0…n-1]是一个大小为n的数组。
public class Binary3 {
public static void main(String[] args) {
int n = 3;
binary(n, new int[n]);
}
public static void binary(int n, int[] arr) {
if (n < 1) {
// n 小于 1时,直接打印字符串
printArr(arr);
} else {
// 步骤一:生成字符串,从后往前生成,当前值为0
arr[n - 1] = 0;
//
// 步骤二:当前节点(0值)生成后,再生成前一个节点的值
binary(n - 1, arr);
// 步骤三:因为是二进制串,同时存在0和1两个值,所以一个节点即要生成0,也要生成1
arr[n - 1] = 1;
// 步骤四:当前节点(1值)生成后,再生成前一个节点的值
binary(n - 1, arr);
}
}
private static void printArr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
System.out.print("\n");
}
}