组合的输出

    xiaoxiao2023-11-06  149

    题目描述

    排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r < = n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数,输出所有组合。

    例如n = 5 ,r = 3 ,所有组合为:

    1 2 3 1 2 4 1 2 5 1 3 4 1 3 5 1 4 5 2 3 4 2 3 5 2 4 5 3 4 5

    输入

    一行两个自然数n、r ( 1 < n < 21,1 < = r < = n )。

    输出

    所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,所有的组合也按字典顺序。

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