您的位置:首页 > 其它

采用回溯法打印1到最大的位数

2016-12-21 17:18 567 查看
打印1到最大的位数,算法采用回溯法

控制台输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
Process finished with exit code 0

代码如下:

/**

* @author liyiwen1

* @date 2016/12/21

*/

public class PrintN {

public static void main(String[] args) {

print(2);

}

public static void print(int n){

int[] list = new int
;

for (int i = 0; i <= 9; ++i){

print(i, list, n, 0);

}

}

public static void print(int node, int[] list, int count, int index){//index
用于标记当前节点是第一位数字
list[index] = node;
if (index + 1 == count){//当当前的数字,已经到达要求位数时则要打印出这个数字

int flag = 0;

for (int i = 0; i < list.length; ++i){

if (list[i] == 0){

if (flag == i){

++flag;

continue;

}else{

System.out.print(list[i]);

}

}else{

System.out.print(list[i]);

}

}

System.out.print(" ");

}else{

for (int i = 0; i <= 9; ++i){

print(i, list, count, index + 1);

}

}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息