92. 递归实现指数型枚举
import java.util.Scanner;
public class Main {
static int N = 16;
static int n;
static int[] st = new int[N];
public static void dfs(int u) {
if(u > n) {
for(int i=1;i<=n;i++) {
if(st[i] == 1)
System.out.print(i+" ");
}
System.out.println();
return ;
}
st[u] = 2;
dfs(u+1);
st[u] = 0;
st[u] = 1;
dfs(u+1);
st[u] = 0;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
dfs(1);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
94. 递归实现排列型枚举
import java.util.Scanner;
public class Main {
static int N = 10;
static int n;
static int[] st = new int[N];
static boolean[] vis = new boolean[N];
public static void dfs(int u) {
if(u > n) {
for(int i=1;i<=n;i++) {
System.out.print(st[i]+" ");
}
System.out.println();
return ;
}
for(int i=1;i<=n;i++) {
if(!vis[i]) {
st[u] = i;
vis[i] = true;
dfs(u+1);
st[u] = 0;
vis[i] = false;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
dfs(1);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
93. 递归实现组合型枚举
import java.util.Scanner;
public class Main {
static int N = 26;
static int n;
static int m;
static int[] st = new int[N];
public static void dfs(int u,int start) {
if(u > m) {
for(int i=1;i<=m;i++) {
System.out.print(st[i]+" ");
}
System.out.println();
return ;
}
for(int i=start;i<=n;i++) {
st[u] = i;
dfs(u+1,i+1);
st[u] = 0;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
dfs(1,1);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30