当前位置: 首页 > 面试题库 >

如何计算数字/位数组的所有可能性(使用python或与此相关的任何语言)

翟冯浩
2023-03-14
问题内容

我已经连续三个小时不停地动脑筋,但是我还是不明白,所以我在这里问。(我在标题中写了Python,但这几乎可以用于任何语言)

假设我有一个固定长度n的位数组(但它也可能是定义范围内的整数),比如说5。

array=[0,1,1,0,0]

现在,我如何生成所有数组,这些数组可能在数字范围内(对于位为2)。

所以:

[0,0,0,0,0], [0,0,0,0,1], [0,0,0,1,0], [0,0,0,1,1] ...

我曾尝试在此处寻找解决方案,但总会发现相似之处,但并不能完全解决我的问题。

为了解决这个问题,我尝试了各种循环,但是我总是最终要么获得一种可能性不止一次(不应发生),要么没有获得所有可能的可能性。

我可以使用if语句(检查组合是否已经存在)来做到这一点,但这似乎并不复杂。

是否有一种仅使用循环的简单方法来获得所有可能性?

谢谢

编辑:由于这是下面提到的,不,这不是家庭作业。这是为了研究以实现二进制状态的贝叶斯网络。(开关)。


问题答案:

在Python中,使用itertools这样的东西

from itertools import product
for i in product([0,1], repeat=5): 
    print i

产量:

(0, 0, 0, 0, 0)
(0, 0, 0, 0, 1)
(0, 0, 0, 1, 0)
(0, 0, 0, 1, 1)
(0, 0, 1, 0, 0)
etc...


 类似资料:
  • 问题内容: 我正在尝试计算由文本字段接收的输入填充的数组的总数,均值和中位数。我设法算出了总数和均值,但我只是无法获得中位数。我认为在执行此操作之前需要对数组进行排序,但是我不确定如何执行此操作。这是问题吗,还是我没有找到另一个问题?这是我的代码: 问题答案: Java中的Arrays类具有静态的排序功能,您可以使用调用该功能。

  • 我试图计算由TextField接收的输入填充的数组的总数、平均值和中位数。我已经算出了总数和平均数,但中位数无法计算出来。我认为在我可以这样做之前需要对数组进行排序,但我不确定如何这样做。是这个问题,还是还有一个我没有找到的?下面是我的代码:

  • 我有一个数字数组,现在我必须通过生成给定数组的所有可能子数组并应用一些条件来找到元素之和。 条件是,对于每个子阵列,获取最小值,并找到其中的元素总数,然后将两者相乘(最小值*总数)。最后,将所有子阵列的所有这些相乘值相加。 以下是问题陈述: 使用下面的公式找到所有可能的子数组的总和: 和(左,右)=(最小的arr[i]) * (∑ arr[i]),其中i的范围从左到右。 例子: 子数组是:[sta

  • 我正在尝试构造一个程序,该程序将获取一个int({1,2,3})数组和一个长度值,并计算该数组的所有可能组合。 例如: 这将输出: 但是当我尝试在 for 循环中调用可能的梳子时,我不断收到堆栈溢出错误 }

  • 给定两个序列和,长度相同。在每个步骤中,您可以设置if

  • 我想创建一个不限制键类型的(如) 所以我试过了 和 结果 好的,我会用 但是 所以继承自,但它不符合???我不明白... 不管怎样,继续努力 没有运气 我现在很迷茫,我怎么能让编译器对我的代码满意呢? 我想像这样使用字典 我知道我能用字典