dfs인데 중복을 허용하는 문제이다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static StringBuilder sb = new StringBuilder();
public static boolean[] visited;
public static List<Integer> list = new ArrayList<>();
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arr = br.readLine().split(" ");
int n = Integer.parseInt(arr[0]);
int m = Integer.parseInt(arr[1]);
visited = new boolean[m];
dfs(0, m, n);
System.out.println(sb.toString());
}
public static void dfs(int dept, int limit, int n) {
if(dept == limit) {
for(int i=0;i<list.size();i++) {
sb.append(list.get(i) + " ");
}
sb.append("\n");
return;
}
for(int i=1;i<=n;i++) {
list.add(i);
dfs(dept+1, limit, n);
list.remove(list.size() - 1);
}
}
}