C(m,n)算法

博客探讨了如何实现C(m,n)的组合算法,包括使用递归和01法两种方法,详细解释了在实际需求中如何进行排列组合计算。" 80270447,7352369,Java环境下OpenCV图像处理,"['OpenCV', 'Java', '图像处理', '矩阵', '颜色模型']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近需求,要写排列组合算法,首先第一步是m个元素中选n个元素进行组合,也就是数学中C(m,n);方法有多种。

递归
let arr = [1,2,3]
function combination(arr, nLen, m, singleArr, list) {
    if (m === 0) {
        let arrCopy = []
        for (let j = 0; j < singleArr.length; j++) {
            arrCopy[j] = singleArr[j]
        }
        list.push(arrCopy)
        return
    }

    for (let i = nLen; i >= m; --i) {
        singleArr[m - 1] = arr[i - 1]
        combination(arr, i - 1, m - 1, singleArr, list)
    }
}

function getArrlist (arr, num) {
    let singleArr = []
    let list = []
    combination(arr, arr.length, num, singleArr, list)
    return list
}

let list = getArrlist(arr, 2) // [2,3] [1,3] [1,2]
01法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值