算法:全组合算法

复制代码
    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[]下标记录数组为更合适的数据结构。

posted @   荒土  阅读(366)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示