算法:全组合算法

简介: public static List combin(final int TOTAL, final int SELETED) { List list = new ArrayList(400000); int[] i = new int[SELETED];...
    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[]下标记录数组为更合适的数据结构。

目录
相关文章
|
5月前
|
算法
什么是退火算法
什么是退火算法
|
算法
算法
一、算法 常见的图查找算法包括: 1. 深度优先搜索(DFS):从图中的一个节点开始,沿着一条路径一直深入直到无法再深入为止,然后回溯到上一个节点,继续深入其他路径,直到找到目标节点或遍历完所有节点。 2. 广度优先搜索(BFS):从图中的一个节点开始,先访问它的所有邻居节点,然后再依次访问邻居的邻居节点,直到找到目标节点或遍历完所有节点。 3. Dijkstra算法:用于在带权有向图中找到从一个节点到其他节点的最短路径。该算法通过不断更新节点的最短距离来逐步找到最短路径。 4. A*算法:类似于Dijkstra算法,但在计算最短路径时加入了启发式函数,用于估计目标节点的距离,从而加速搜索过程
390 0
|
算法
BWT算法
BWT算法
200 0
BWT算法
|
算法
蚂群算法
蚂群算法
91 0
蚂群算法
|
存储 算法 搜索推荐
C#算法大全(上)
今天有人想让我搞一期C#算法大全。算法就算法,安排上!
|
算法
超实用的算法小技巧
本篇文章我们将介绍一些超级实用的算法小技巧,灵活使用这些算法小技巧可以帮助我们更好的解决遇到的问题,让我们的时间复杂度,空间复杂度大大降低,有效的提高我们的编程能力。
147 0
|
算法 前端开发 rax
举轻若重,于无声处听惊雷,那些平平无奇的伟大算法
遥想笔者读大学时在技术讨论时多是储如i+=(++i)+(i++)之类的孔乙己式的问题,而最近我们关注的热点要不是删库跑路坐牢的程序员,要不是员工离职倾向分析系统;而反观国外大神的博客,要不就是这种切入点非常简单,但是最终能够升华至编程之道层面的举轻若重的文章,要不就是秀出那些智商碾压的神仙代码,从这个角度上看我们国内的IT技术氛围还有极大的提升空间。
举轻若重,于无声处听惊雷,那些平平无奇的伟大算法
|
算法
左神起百算,成机算法魂
左神起百算,成机算法魂
107 0
左神起百算,成机算法魂
算法硬算能提升多少
解决一个问题,想到一个方法,设计个对应的模型,开始训练吧。。。。 是这个思路没错吧(别较真,较真你就输了。) 然后就是慢长的等待,2天,3天。。。 transformer的WMT训练了3.5天,几天的训练是家常便饭了现在。
807 0
|
人工智能 算法 搜索推荐
线性排序算法(1)
排序 选择排序(适用于线性排序) 思路,2层遍历 第一步:选择最小的元素,与第一个元素交换。 第二步:从第二个元素到最后一个元素,选择最小元素,与第二元素交换 完成前两步,第1第2元素已经排好序。
992 0