zoukankan      html  css  js  c++  java
  • 组合数学

    1.任取黑白混杂的棋子21个,排成3行7列,证明无论怎样排列,都可以找到一个小长方形矩阵,使四个角上的棋子的颜色相同。

    三行七列,每一列至少有两个颜色相同,六种情况:12同白,12同黑,13同白,13同黑,23同白,23同黑。六种情况、七列,必然有至少两列情况相同,故得到解,鸽笼原理,记得小时候书上管这叫抽屉原理来着。

    2.从2n个连续整数中任取n+1个,证明:这n+1个数中必有两个互质。

    按顺序两两分组,分成n组,每组中的k,k+1必互质,再次利用鸽笼原理,必有一组中的两个数同时被选中,两数互质,证毕。

    3.8*8的棋盘,可以用32个多米诺骨牌(1*2的矩形)恰好覆盖。若去掉左上角和右下角的格子,证明用31块骨牌不能覆盖余下的棋盘。

    将棋盘的行用i=1…8标记,列用j=1…8标记,则棋盘上的格子可按i+j是奇数还是偶数分成两类,各32个,且相间出现,即每个第一类格子的四周都是第二类格子,每个第二类格子的四周都是第一类格子。左上角和右下角的格子是同类格子,因此去掉后两类格子分别剩下30个和32个,而一个骨牌只能覆盖一块1*2区域,且该区域内必有两类格子各一个,故不能用31个骨牌将余下的棋盘恰好覆盖。

    4.“门票问题”——2n个人排队购票入场,其中n个人手拿50元钞票,n个人手拿100元钞票,门票价格为50元,售票处没有任何零钱,问有多少种排队方式能顺利让2n个人都购票入场?n个0和n个1共2n个数进行排列,要求从头遍历到任何位置时0的个数都不小于1个个数,问有多少种排列方式?

    答案为卡特兰数C(2n,n)-C(2n,n-1)=C(2n,n)/(n+1),证明如下:不考虑是否符合题目要求,n个0和n个1的排列方式为C(2n,n),再考虑不符合条件的排列方式有多少,减去即可。考虑每种不符合条件的排列,必存在一个奇数位置2m+1,在该处之前出现了m+1个1和m个0,该位置之后的2(n-m)-1个数中出现n-m个0和n-m-1个1,将后面这部分的0和1互换(0变成1,1变成0),这样每个不符合条件的序列都对应一个由n+1个1和n-1个0组成的2n长的序列;反过来,任何一个由n+1个1和n-1个0组成的2n长的序列,都能找到一个奇数位置2m+1使得从头至此有m+1个1和m个0,将后面的部分0和1互换,这样每个由n+1个1和n-1个0组成的2n长序列都对应一个不符合条件的序列。因此证明了不符合条件的序列个数为C(2n,n-1),故符合条件的序列个数为C(2n,n)-C(2n,n-1) = C(2n,n)/(n+1)。

    5.“方程的解”问题——已知一个方程x1+x2+…+xn=P,其中x1>=a1,x2>=a2,…xn>=an,并且(a1+a2+…+an)<=P。问共有多少组解?

    首先很容易分析出,问题等同于找到x1+x2+…+xn=P’,其中P’=P-(a1+a2+…+an),x1>=0,x2>=0,…xn>=0。

    这个问题有个异常强大的思路:写一个由P’个1和n-1个0组成的序列,令xi等于第i-1个0和第i个0之间1的个数,且x0等于第一个0之前1的个数,xn等于第n-1个0后面的1个个数,这样每个P’个1和n-1个0组成的序列和每个方程的解就是一一对应的了。所以解的组数是C(P’+n-1,n-1)。







                If you have any questions about this article, welcome to leave a message on the message board.



    Brad(Bowen) Xu
    E-Mail : maxxbw1992@gmail.com


  • 相关阅读:
    iOS 各种编译错误汇总
    Reveal查看任意app的高级技巧
    PCH in Xcode 6
    iOS开发之工具篇-20个可以帮你简化移动app开发流程的工具
    UICollectionViewController xcode6.1 自定义Cell
    Xcode6.1 Prefix.pch添加方式
    最近开始研究php的缓存技术,来个系统自带的OPcache
    今天练手了下mysqlbinlog,标记下
    写了个数组多个数组合并返回的是不重复的数组
    ngnix配置thinkphp5隐藏index.php的方法亲测有效
  • 原文地址:https://www.cnblogs.com/XBWer/p/2603010.html
Copyright © 2011-2022 走看看