代码之家  ›  专栏  ›  技术社区  ›  NXT

寻找一个计算排列的好参考

  •  1
  • NXT  · 技术社区  · 16 年前

    作为一名程序员,我经常需要知道 如何计算一个集合的排列数,通常 用于估算。

    有很多不同的方法可以指定 组合,取决于手头的问题。例如, 给定字母A、B、C、D的集合

    1. 假设一个4位数的结果,这些字母可以有多少种方式 安排好了吗?

    2. 如果你可以有1、2、3或4个数字,那么有多少种方法呢?

    3. 如果每个字母最多只能用一次怎么办? 两次?

    4. 如果你必须避免同一个字母出现在 一排,但如果不是一排,那么两次就可以了?

    等等。我相信还有很多。

    有人知道一本网络参考书或一本谈论 非数学家能理解这个问题吗?

    谢谢!

    4 回复  |  直到 16 年前
        1
  •  3
  •   pierrotlefou    16 年前

    假设一个4位数的结果,有多少 这些字母怎么排列?

    选择第一个数字时,您有4个选择,分别是A、B、C和D;选择第二个、第三个和第四个数字时,相同,因为允许重复: 所以你得到了总数: 4*4*4*4 = 256 选择。

    如果你能有1,2,3或4呢 数字,那么有多少种方式?

    从问题1很容易推断出来。

    如果你只允许使用 每封信最多一次?

    当选择第一个数字时,您有4个选项,分别是A、B、C和D;当选择第二个数字时,您有3个选项,除了为第一个数字选择的选项外;和为第三个数字选择的2个选项,为第四个数字选择的1个选项。 所以你得到了总数: 4 * 3 * 2 * 1 = 24 选择。

    这里涉及的知识包括组合、排列和概率。这是一个很好的 tutorial 了解他们的不同。

        2
  •  2
  •   Ryu    16 年前

    首先,你所谈论的话题是

    我建议你 Math Tutor DVD 教自己数学题。“概率统计”磁盘集将为您提供解决问题所需的公式和技能。这很好,因为这是你能回到学校最接近的事情,因为老师会帮你解决白板上的问题。

    我在 Combinations 视频的章节供您查看。

        3
  •  1
  •   John D. Cook    16 年前

    如果你需要做的不仅仅是计算组合和排列的数量,如果你真的需要生成序列,那么DonaldKnuth的书 Generating all combinations and partitions Generating all tuples and permutations . 他详细介绍了受各种限制的算法,并研究了针对每个问题的不同解决方案的优缺点。

        4
  •  0
  •   Kirk Broadhurst    16 年前

    这完全取决于你需要的解释有多简单。

    你要找的主题叫做“排列和组合”。

    Here's 相当简单的介绍。在谷歌的前几页上有几十个这样的页面。