gpt4 book ai didi

javascript - 如何在javascript中获取变体数字组合的数量?

转载 作者:行者123 更新时间:2023-12-03 09:55:06 30 4
gpt4 key购买 nike

我需要实现一个接受两个参数的函数 - 0 的数量和 1 的数量,并确定有多少种方式放置这些 01,这样一行中就没有两个零。

例如,我需要找到放置两个0和两个1的所有方法。

有六种可能的放置方式:001101010110100110101100

在三种情况下,连续有两个零:001110011100

我从总数中减去它们,得到三种可能的方式:010101101010。所以答案是3

首先,我尝试编写脚本来识别我需要哪些情况

let arr = ["1100","1010","1001","0011","0101","0110"]
let result = [];
for (let i = 0; i < arr.length; i++){
let expVal = arr[i];
for (let p = 0; p < expVal.length; p++){
if (expVal[p] === expVal[p++] || expVal[p] === "0"){
result.push(expVal)
}
}
}
console.log(result);

这不起作用。我不知道如何解决它。我不明白我以后需要做什么

最佳答案

您正在解决的问题相当于斐波那契数列。

过滤包含“00”的内容

递归函数 x 使用 n0 个零、n1 个生成二进制数字字符串。工作原理是分支到(添加一个零,查找 1 减 0 的组合)'0'+x(n0-1,n1) 和(添加 1,查找 1 减 1 的组合)'1'+x(n0,n1-1).

let arr = ["1100","1010","1001","0011","0101","0110"]

const x = (n0,n1) =>
!(n0 === 0 || n1 === 0) ?
x(n0-1,n1).map(x=>'0'+x).concat(
x(n0,n1-1).map(x=>'1'+x))
: ['0'.repeat(n0)||'1'.repeat(n1)]

arr = x(2,2)

console.log(
x(2,2)
)

console.log(arr.filter(x=>x.includes('00')))

关于javascript - 如何在javascript中获取变体数字组合的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62154266/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com