zoukankan      html  css  js  c++  java
  • 萌新浅讲排列组合小知识

    排列组合最重要的思想:进入角色,你要干嘛,你会在哪里?

    排列组合

    两个重要的性质:加乘原理;

    通俗的讲:

    加法原理:每一件事(每一类),都能圆满地完成

    乘法原理:每一步都是完成一件事的“充分不必要

    具体方法有:

    捆绑法,插空法,除序法,排除法,穷举法,挡板法;

    挡板法(举例):

    举例1:

    X+Y+Z=100(X,Y,Z都属于正整数),问有多少种组合的解;

    其实问题就等价于 有100个球,有三个桶,然后将这个100个球分到每个桶里去,保证桶不是空的。

    思路:

    现在用一行0表示有100个球:

    000…000000…..000

    现在有两块挡板 |  |,去插到这个序列,可以看到可以插的位置有101个,我们知道每个数都是正整数(每个桶都不为空),那么最左或最右不能插,不能和在一起,那么就是意味着减去两端的位置,然后剩下的位置随意拿出两个来就行了;那么答案就是:C(2,99)(注:这个就是组合数表示);

    举例2:

    X+Y+Z=100 (X,Y,Z属于自然数) ,就有多少个组合的解

    方法一:

    还是先转化到桶和球的问题上;等价于 有100个球,有三个桶,然后将这个100个球分到每个桶里去,桶可以是空的;

    先借3个球,先放到每个桶里面,那么现在问题变成了:有103个球,有三个桶,然后将这个103个球分到每个桶里去,保证桶不是空的。

    答案就是C(2,102);

    方法二:

    按照例1的方法来,那么就是板放哪里就是哪里,隔板参与活动,隔板有多少种不同的位置;

    答案是C(2,102);

    各种例题:

    例1:

    题意:现有:3个1分币,6个一角币,4个10元,共组成多少种非0硬币

    思路:

    这个非0币肯定是用 10元币,角币,分币构成;

    那么分别的可能就是: 5   *  7  *  4   但是还有一种不可能都是0的情况

    所以要减1;

    例2:

    集合A={A1,A2,A3,A4};集合B={B1,B2,B3,B4};

    现让A集合去和B集合组合,要求B1的组合不能是A1,B4的组合不能是A4;

    转化就是:甲乙丙丁四个人跑步,甲不跑第一棒,乙不跑第四棒的跑法;

    第一种做法:

    分类(有点技巧),我让A1去和B4组合,A(3,3);我让A1不和B4组合,现在就是A1,A4都不能和B4组合,所以从另外二个人里面去选一个和B4组合,然后A1还不能和B1组合,再从两个人里面挑一个和B1组合,然后其余两个随意站,即依次是C(1,2)*C(1,2)*A(2,2);

    第二种做法:

    我们直接就是让A和B随意去组合,那么就是A(4,4);很明显多了,当A1在B1时多了A(3,3),当A4在B4时多了A(3,3),现在时A(4,4)-2*A(3,3),很明显是减多了,要加回来A(2,2);

    所以答案就是:A(4,4)-2A(3,3)+A(2,2);

    例3:

    集合A={A1,A2,A3,A4};集合B={B1,B2,B3,B4};

    解法1,容斥原理:多了减,减了加;

    A(4,4)-C(1,4)*A(3,3)+C(2,4)*A(2,2)-C(3,4)*A(1,1)+C(4,4);

    解法2,A1先挑;

    3*3*1*1;

    再举一类排队问题;

    排队问题:

    例:

    8个人照相,按如下要求,

    1,甲乙丙必须相邻,丁戊不能相邻;

    甲乙丙捆一块算一个,A(4,4)*A(2,5)*A(3,3);

    2,甲乙中间,丙丁不两端;

    0 0 0 0 0 0 0 0

           A(2,2)*A(2,4)*A(4,4);

    3,甲不在左端,甲不在乙的右侧

           0 0 0 0 0 0 0 0

           总数减多余,除序,

           A(8,8)/A(2,2)-A(7,7)

  • 相关阅读:
    J.U.C AQS(abstractqueuedssynchronizer--同步器)
    垃圾收集器与内存分配策略---内存的分配与回收
    16.合并两个排序的链表
    15.反转链表
    14.链表中倒数第k个节点
    15.Subtree of Another Tree(判断一棵树是否为另一颗树的子树)
    flask 学习app代码备份
    TCSRM5961000
    URAL1291. Gear-wheels
    hdu4422The Little Girl who Picks Mushrooms
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6216811.html
Copyright © 2011-2022 走看看