AcWing 93. 递归实现组合型枚举
原题链接
简单
作者:
TrumA
,
2025-03-13 23:05:03
·河南
,
所有人可见
,
阅读 1
import java.util.*;
/*
*@program:untitled3
*@projectName:PACKAGE_NAME
*@author: TrumA
*@Time: 2025/3/13 21:28
*@description:
*/
public class Main {
static int N = 25;
static int n, m;
static int[] state = new int[N];
static boolean[] used = new boolean[N];
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
m = scanner.nextInt();
dfs(1);
}
public static void dfs(int u) {
if (u > m){
for (int i = 1; i <= m; i++) {
if (state[1] > n - m + 1)
return;
System.out.print(state[i] + " ");
}
System.out.println();
return;
}
for (int i = 1; i <= n; i++) {
if (!used[i] && i > state[u - 1]){
state[u] = i;
used[i] = true;
dfs(u + 1);
//恢复原来的状态
state[u] = 0;
used[i] = false;
}
}
}
}