日期:2014-05-20  浏览次数:20618 次

java:如何用递归实现从M个不同字符中任取N个字符的所有组合
真心请教,如何用递归实现从M个不同字符中任取N个字符的所有组合?
觉得自己思路是有了,但用代码实现时,发现还是做不到...
先谢谢了...

------解决方案--------------------
public class Combinatory {
    public static void main(String[] args) throws InterruptedException {
        char[] chs = "ABCD".toCharArray();
        int maxCount = 2;

        LinkedList<Character> result = new LinkedList<Character>();
        combination(chs, 0, 0, maxCount, "");
        System.out.println("++++++++++++++++++++++++++++++++++");
        combination(chs, 0, 0, maxCount, result);
    }

    public static void combination(char[] chs, int index, int count, int maxCount, LinkedList<Character> result) {
        if (count == maxCount) {
            System.out.println(result);
            return;
        }

        for (int i = index; i < chs.length; ++i) {
            result.addLast(chs[i]);
            combination(chs, i + 1, count + 1, maxCount, result);
            result.removeLast();
        }
    }

    public static void combination(char[] chs, int index, int count, int maxCount, String result) {
        if (count == maxCount) {
            System.out.println(result);
            return;
        }

        for (int i = index; i < chs.length; ++i) {
            combination(chs, i + 1, count + 1, maxCount, result + chs[i] + " ");
        }
    }
}

------解决方案--------------------
LZ做出来了没,我自己试了一下,挺难的,唉,没学好啊,,,呵呵
网上搜了一下,有篇博客讲解了这个http://www.cnblogs.com/HappyAngel/archive/2010/11/02/1867649.html