用递归实现n选m排列

来源:互联网 发布:ps4版辐射4捏脸数据 编辑:程序博客网 时间:2024/05/19 00:47
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到nif (v[i] == false) {// 如果该数字没有填过,即为falsea[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);}}

0 0
原创粉丝点击