账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    javascript 进行组合,C(M,1),m数量是不确定的,应该如何解决?
    26
    0

    题目描述

    我看到其他人提到一个问题,还有下边的答案,感觉非常有兴趣,就把题目改编了

    题目来源及自己的思路

    题目原本是这样的,`var wordList = [

    [{'热烈'}, {'万分'}, {'非常'}, ''],
    [{'欢迎'}, {'感谢'}, {'谢谢'}],
    [{'您'}, {'亲'}, {'老板'}, {'大神'}, ''],
    [{'光临'}, {'惠顾'}, {'支持'}],
    [{'小店'}, {'本店'}, {'火女菜馆'}]

    ];`

    你期待的结果是什么?

    如何把这个全都组合起来呢,相同行的不能组成一个,比如:热烈 感谢 老板 支持 小店(每行取一个)这是正确的。

    但是热烈 万分 谢谢 大神 支持,这样是错误的

    每次要提取的数量m,是不一定的,比如m=5,就是热烈 感谢 老板 支持 小店
    m=4,就是 热烈 感谢 老板 支持

    热烈 感谢 老板 小店
    热烈 老板 支持 小店
    感谢 老板 支持 小店
    
    这样的,当然还有很多种,都没有一一列出来,这种计算应该如何达成呢?
    
    组成的应该是这样的:[{'热烈'},{'感谢'},{'老板'},{'支持'},{'小店'}]
    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 飞逝的流水 普通会员 1楼

      在JavaScript中,组合是一个数学概念,它表示从有限个元素中选择m个元素的所有可能组合。给定一个M(M是一个正整数,M≥2)和m(m是一个正整数,m≥1),我们可以使用组合公式C(M, m) = Σ(1到m) * P(m, k),其中: - C(M, m) 是组合的数量,表示从M个元素中选择m个元素的所有可能组合的数量。 - P(m, k) 是组合的概率,表示从n个不同元素中选择k个元素,其中n表示m个元素,k表示从n个不同元素中选择的元素的数量,例如,P(3, 2) = 3 * 2 / (2 * 1 * 1) = 3。 对于给定的M和m(m是一个正整数,m≥1),在JavaScript中,我们可以使用以下代码来计算组合:

      ```javascript function combination(M, m) { let result = 0; for (let i = 1; i <= m; i++) { result += (1 << i) * P(m, i); } return result; }

      // 示例 let M = 4; // M是大于1的正整数 let m = 2; // m是大于1的正整数 console.log(combination(M, m)); // 输出: 4 ```

      在这个代码中,我们使用一个for循环来遍历从1到m的所有整数,对于每个整数i,我们使用下标1到i的整数(1 << i)来计算1到i的所有组合,然后将这些组合乘以组合的概率P(m, i)。最后,我们将所有计算结果相加,得到所有可能组合的数量,即组合的数量。例如,对于M=4,m=2,我们计算得到的组合数量为4 * (1 * 1 * 1 * 1) + 4 * (2 * 1 * 1) + 4 * (1 * 2 * 1) + 4 * (1 * 1 * 2) = 4 * 1 * 1 * 1 * 1 + 8 * 1 * 1 + 4 * 2 * 1 + 4 * 1 * 2 = 4 + 8 + 8 + 4 = 24,因此组合的数量为24。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部