码迷,mamicode.com
首页 > 其他好文 > 详细

算法:全组合算法

时间:2014-06-25 12:01:05      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   color   com   

    public static List<int[]> combin(final int TOTAL, final int SELETED) {
        List<int[]> list = new ArrayList<int[]>(400000);
        int[] i = new int[SELETED];
        for (int x = 1; x <= SELETED; x++)
            i[x - 1] = x;
        final int LAST = SELETED - 1;
        while (true) {
            list.add(Arrays.copyOf(i, SELETED));
            i[LAST]++;
            for (int n = LAST; n > 0; n--) {
                //i[n]达到顶点
                if (i[n] > TOTAL - SELETED + 1 + n) {
                    i[n - 1]++;
                    for (int x = n; x < SELETED; x++) {
                        i[x] = i[x - 1] + 1;
                    }
                }
            }
            if (i[0] == TOTAL - LAST + 1) {
                break;
            }
        }
        return list;
        // return null;
    }

    public static void main(String[] args) {
        long i = System.currentTimeMillis();
        List<int[]> list = combin(36, 5);
        System.out.println(System.currentTimeMillis() - i);
        System.out.println(list.size());
    }

 

 

如果有兴趣使用的同仁,请自行修改int[]下标记录数组为更合适的数据结构。

算法:全组合算法,布布扣,bubuko.com

算法:全组合算法

标签:style   class   blog   code   color   com   

原文地址:http://www.cnblogs.com/anrainie/p/3807121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!