import java.util.Scanner;
public class 生成n选m的排列 {
public static int[] a = new int[100];// 用来存排列的数组
public static boolean[] v = new boolean[100];// 用来标记所选的数字
public static void dfs(int n, int m, int cur) {// n个数选m个,在数据的cur位置填,并且从开始填
if (cur == m + 1) {// 当所选的个数达到m时,输出
for (int i = 1; i < cur; i++) {
System.out.print(a[i]);
}
System.out.println();
} else {
for (int i = 1; i <= n; i++) {// 从1到n
if (v[i] == false) {// 如果该数字没有填过,即为false
a[cur] = i;// 填数
v[i] = true;// 标记
dfs(n, m, cur + 1);// 再填下一个
v[i] = false;// 恢复标记
}
}
}
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int m = s.nextInt();
dfs(n, m, 1);
}
}
用递归实现n选m排列
最新推荐文章于 2020-10-16 18:34:16 发布