用js 把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法? 注意:如果有7个苹果和3个盘子,(5,1,1)和(1,5,1)被视为是同一种分法。
时间: 2023-11-14 10:04:59 浏览: 129
Integer Factorization 对于给定的正整数n,编程计算n共有多少种不同的分解式。
4星 · 用户满意度95%
这是一个经典的组合数学问题,可以用“隔板法”解决。我们可以将苹果看做球,将盘子看做隔板,那么问题就转化为将m个球和n-1个隔板放入n个位置的方案数,即:
C(m+n-1, n-1)
其中C表示组合数,计算公式为:
C(a, b) = a! / (b! * (a-b)!)
将上式带入原式中,得到答案为:
C(m+n-1, n-1) = (m+n-1)! / ((n-1)! * m!)
以下是用 JavaScript 实现该算法的代码:
```javascript
function combination(m, n) {
let numerator = 1;
for (let i = m + 1; i <= m + n - 1; i++) {
numerator *= i;
}
let denominator = 1;
for (let i = 1; i <= n - 1; i++) {
denominator *= i;
}
return numerator / denominator;
}
const m = 7;
const n = 3;
const ways = combination(m, n);
console.log(`将${m}个苹果放进${n}个盘子的方案数为:${ways}`);
```
输出结果为:
将7个苹果放进3个盘子的方案数为:35
阅读全文