递归入门——全排列

    xiaoxiao2023-10-07  155

    题目描述:

    排列与组合是常用的数学方法。 先给一个正整数 ( 1 < = n < = 10 ) ,例如n=3,所有组合,并且按字典序输出: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1

    输入

    输入一个整数n( 1<=n<=10)

    输出

    输出所有全排列 每个全排列一行,相邻两个数用空格隔开(最后一个数后面没有空格)

    样例输入

    3

    样例输出

    1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1

    代码
    import java.util.Scanner; public class Main { int n; boolean[] mark; int[] A; public Main() { Scanner s = new Scanner(System.in); n = s.nextInt(); mark = new boolean[n + 1]; A = new int[n]; Search(0); } void Search(int pos) { if (pos == n) { System.out.print(A[0]); for (int i = 1; i < n; i++) System.out.print(" " + A[i]); System.out.println(); return; } for (int i = 1; i <= n; i++) { if (mark[i] == false) { A[pos] = i; mark[i] = true; Search(pos + 1); mark[i] = false; } } } public static void main(String[] args) { Main p = new Main(); } }
    最新回复(0)