zoukankan      html  css  js  c++  java
  • 排列

    排列

    问题:设集合S包含n个元素,从S中选择R个元素有多少种取法? 根据取出的元素是否允许重复,取出的过程是否有序可以将该问题分为四个子类型:

    有序选取 排列(不重复选取),可重排列(重复选取)

    无序选取 组合(不重复选取),可重组合(重复选取)

    1,可重排列

    从n个不同的对象中,取r个可重复的对象,按次序排列,称为n取r的可重排列。

    即当|A|=n时,A*中长为r的串的个数。

    定理一:n取r的可重排列数目为nr

      对于r个来说每一个位置都有n种选法;

    2,排列

    从n个不同的对象中,取r个不重复的对象,按次序排列,称为n取r的排列。n取r排列的全体构成的集合用P(n,r),排列的的个数用P(n,r)表示;

    当r=n时称为全排列或置换(permutation).

    即当|A|=n时,A*(比如A是二十六个字母A是所有字母串构成的集合)中长为r且各项彼此不同的串的个数。

    定理二:

    n<r时,P(n,r)=0;

    n>=r,p(n,r)=n·(n-1)·...·(n-r+1)。

    全排列经常被理解为是包含某个有限集合中的所有元素一次且仅一次的序列。

    设A是集合,如果|A|=n,则A的全排列的个数为

    n×(n-1)×...×1

    这个值通常写为n!。

    例1:如果有4个男孩和四个女孩坐成一排,每个人旁边都只能坐着异性,那么共有多少种坐的方式?

    第一个位置可以是女孩,也可以是男孩;

    则2* 4! *4!

    3,限制次数的可重排列(多重集合)

    问题:a,b,b,e,e,h,i,s,s,t,t,t可以组成多少个长度为12的字符串?

    例如 tseabibttseh

    先考虑一个同类型的简单问题:

    • 由a,a,b,c可以组成多少个长度为4的字符串?

     对a加下标得到a1,a2

    于是一共可以得到4!=24个长度为4的字符串。去掉下标后两两相同,一半是多余的

    总的方案数4!/2=12;

    • 由a,a,a,b可以组成多少个长度为4的字符串?

    总的方案数4!/3!=4;对a加下标得到4!种去掉下标有三种是相同的;

    • 由a,a,a,b可以组成多少个长度为4的字符串?

    总的方案数 4!/(2! *2!)=6;

    定理:

    由k1个1,k2个2,...,kt个t组成的长度为n的排列总数为

                               n!/(k1! k2! ··· kt!)

     其中n=k1+k2+...+kt。

    回到最初的问题:12!/(2!2!2!3!)=9979200;

     

     

     

     

  • 相关阅读:
    php的多态性
    php接口
    php抽象类和抽象方法
    php类与对象的魔术方法
    php关键字
    php类型之class类,对象,构造函数的理解
    php日期格式化
    php之常用字符串方法
    php将获取的数组变成字符串传入txt文本。。。
    PHP之键值操作函数
  • 原文地址:https://www.cnblogs.com/sweetlittlebaby/p/12775047.html
Copyright © 2011-2022 走看看