美文网首页
m选n组合

m选n组合

作者: JacobMa1996 | 来源:发表于2018-04-18 20:17 被阅读0次

    最近需求,要写排列组合算法,首先第一步是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法

    相关文章

      网友评论

          本文标题:m选n组合

          本文链接:https://www.haomeiwen.com/subject/ptebkftx.html