递归实现组合型枚举
dfs第二个参数指定循环开始的初始化数字
样例
import java.util.*;
public class Main {
static int n, m;
static int[] data;
static boolean[] status;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
data = new int[m+1];
status = new boolean[n+1];
dfs(1,1);
}
public static void dfs(int p,int index) {
if(p>m) {
for(int i=1;i<=m;i++) {
System.out.print(data[i]+" ");
}
System.out.println();
return;
}
for(int i=index;i<=n;i++) {
if(!status[i]) {
data[p]=i;
status[i]=true;
dfs(p+1,i+1);
data[p]=0;
status[i]=false;
}
}
}
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla