JAVA组合递归算法

来源:互联网 发布:薛之谦的回应 知乎 编辑:程序博客网 时间:2024/06/18 04:02
    public static void main(String[] args) {        char[] ch = { 'a', 'b', 'c', 'd' };        boolean[] bool = new boolean[ch.length];        combinat(ch, 2, bool, 0);    }    // num:取几个元素,bool:标记是否取出,start:开始位置    public static void combinat(char[] ch, int num, boolean[] bool, int start) {        if (num == 0) {            for (int i = 0; i < start; i++) {                if (bool[i] == true) {                    System.out.print(ch[i]);                }            }            System.out.println();            return;        }        if (start == ch.length) {            return;        }        bool[start] = true;        combinat(ch, num - 1, bool, start + 1);        bool[start] = false;        combinat(ch, num, bool, start + 1);    }

输出:

abacadbcbdcd
0 0