public static void main(String[] args) {
int[] arr = {1, 2, 3, 4};
List<String> list = new ArrayList<>();
dfs(list, new ArrayList<>(), arr, 0, 3);
for(String x : list)
System.out.println(x);
}
static void dfs(List<String> list, List<Integer> sub, int[] arr, int ind, int k) {
if(sub.size() == k) {
StringBuilder sb = new StringBuilder();
for(int x : sub) sb.append(x);
list.add(sb.toString());
return;
}
for(int i = ind; i < arr.length; i++) {
sub.add(arr[i]);
dfs(list,sub, arr, i+1, k);
sub.remove(sub.size()-1);
}
}