采用回溯法打印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);
}
}
}
}
控制台输出:
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);
}
}
}
}
相关文章推荐
- 字符串------打印1到最大的n位数
- 剑指offer 面试题17:打印1到最大的n位数
- 打印1到最大的n位数
- 打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 【剑指Offer面试编程题】题目1515:打印1到最大的N位数--九度OJ
- 数据结构-打印1到最大的n位数
- 面试题12:打印1到最大的N位数
- 剑指offer:打印1到最大的n位数
- 剑指offer-面试题 12 打印 1 到最大的 n 位数
- 打印1到最大的n位数:大数问题,全排列实现
- 打印从1到最大的n位数.
- 面试题12:打印1到最大的n位数
- 边看边写(打印1到最大的n位数)
- 打印1到最大的n位数
- 打印输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999。
- Algorithm - 打印从0到最大的n位数
- 剑指offer_12_打印1到最大的n位数
- 打印1到最大的n位数。
- C语言 打印1到最大的N位数(输入3,打印1,2,3~999)