package com.heu.wsq.leetcode.inoffer;
import java.util.ArrayList;
import java.util.List;
public class Offer17 {
public int[] printNumbers(int n) {
int[] ans = new int[(int) Math.pow(10, n) - 1];
for (int i = 0; i < ans.length; i++) {
ans[i] = i + 1;
}
return ans;
}
public List<String> printNumbers2(int n){
if(n < 0){
return new ArrayList<>();
}
char[] path = new char[n];
List<String> ans = new ArrayList<>();
for(int i = 0; i < 10; i++){
path[0] = (char) (i + '0');
dfs(1, path, ans, n);
}
return ans;
}
public void dfs(int index, char[] path, List<String> ans, int len){
if(index >= len){
int pos = 0;
while(pos < len && path[pos] == '0'){
pos++;
}
if (pos == len)
ans.add("0");
else {
ans.add(new String(path, pos, len - pos));
}
return;
}
for (int i = 0; i < 10; i++){
path[index] = (char)(i + '0');
dfs(index + 1, path, ans, len);
}
}
public static void main(String[] args) {
int n = 2;
Offer17 offer17 = new Offer17();
List<String> list = offer17.printNumbers2(n);
for (String s : list) {
System.out.println(s);
}
}
}