排列组合相关知识及组合数与杨辉三角形的关系(初学者篇)

重要声明:此文面向初学者

真心推荐Typora,对于与我类似的markdown/LaTeX初学者尤其方便

进入正题:众所周知,杨辉三角形(也称“帕斯卡三角形”,后同)长这样↓

杨辉三角形
即每一项等于左上方的数加右上方的数的和

学编程的人一般看作这样↓

在这里插入图片描述
即每一项等于左上方的数与上方的数之和。
写个简单的递推式。

#include<stdio.h>
const int maxn=1e4+5;
int f[maxn],n;
int main(){
	scanf("%d",&n);f[1][1]=1;
	for(int i=2;i<=n;i++)
        for(int j=1;j<=i;j++)
            f[i][j]=f[i-1][j-1]+f[i-1][j];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=i;j++)
            printf("%3d%c",f[i][j],j==i?'\n':' ');
    return 0;
}

简单的递推式。c++

杨辉三角长啥样都知道了,那它与组合数有啥关系呢?

关系:C n m C^m_nCnm的值等于杨辉三角形第n行第m个数
递推公式:C n m = C n − 1 m − 1 + C n − 1 m C^m_n=C^{m-1}_{n-1}+C^{m}_{n-1}Cnm=Cn1m1+Cn1m

关系可以由递推公式得到。

实际上这里才进入正题

我就是来证个递推公式的
公式特写(Typora):
公式特写Typora
公式特写(Word)(感觉Word公式的效果好丑)
公式特写Word
代码啥的统一放后面了(因为太长了,而且突然想起没讲这玩意↓)。
C n m = n ! m ! ( n − m ) ! C^m_n=\tfrac {n!}{m!\left(n-m\right)!}Cnm=m!(nm)!n!
这个通项公式咋来的呢?

组合公式就是由排列公式去掉重复的部分得到的

C n m = A n m m ! C^m_n=\dfrac{A^m_n}{m!}Cnm=m!Anm
以下摘自百度百科并进行了LaTeX处理:

定义及公式

排列的定义:从n nn个不同元素中,任取m mmm ≤ n m\le nmnm , n m,nm,n均为自然数,下同)个不同的元素按照一定的顺序排成一列,叫做从n nn个不同元素中取出m mm个元素的一个排列;从n nn个不同元素中取出m ( m ≤ n ) m\left(m\le n\right)m(mn)个元素的所有排列的个数,叫做从n nn个不同元素中取出m mm个元素的排列数,用符号A n m A^m_nAnm表示。
计算公式:A n m = n ( n − 1 ) ( n − 2 ) . . . . . . ( n − m + 1 ) = n ! ( n − m ) ! A^m_n=n(n-1)(n-2)......(n-m+1)=\dfrac{n!}{(n-m)!}Anm=n(n1)(n2)......(nm+1)=(nm)!n!
此外规定0! = 1
组合的定义:从n nn个不同元素中,任取m ( m ≤ n ) m\left(m\le n\right)m(mn)个元素并成一组,叫做从n nn个不同元素中取出m mm个元素的一个组合;从n nn个不同元素中取出m ( m ≤ n ) m\left(m\le n\right)m(mn)个元素的所有组合的个数,叫做从n nn个不同元素中取出m mm个元素的组合数。用符号C n m C^m_nCnm表示。
计算公式:C n m = A n m m ! = n ! m ! ( n − m ) ! ; C n m = C n n − m . ( n ≥ m ) C^m_n=\dfrac{A^m_n}{m!}=\dfrac{n!}{m!(n-m)!};C^m_n=C^{n-m}_n.(n\ge m)Cnm=m!Anm=m!(nm)!n!;Cnm=Cnnm.(nm)

笔者小计:C n m = C n n − m C^m_n=C^{n-m}_nCnm=Cnnm应该属于性质公式。。。

符号:

C − C o m b i n a t i o n C -CombinationCCombination 组合数
A − A r r a n g e m e n t A -ArrangementAArrangement 排列数(在旧教材为P − P e r m u t a t i o n P-PermutationPPermutation
N − N u m b e r N -NumberNNumber 元素的总个数
M − M -M 参与选择的元素个数
! − F a c t o r i a l ! - Factorial!Factorial阶乘

个人认为排列组合数的定义和公式看完上述段落应该就会了。
关于排列组合数的性质这里就不再赘述(毕竟是初学者篇),请自行查询。

Markdown+LaTeX (Used Typora):
在这里插入图片描述
CSDN似乎不支持\begin{align},所以只能放个截图再加个代码了。。
Markdown+LaTeX代码:

$$
C^{m}_{n}=\tfrac {n!}{m!\left( n-m\right) !}\\
\begin{align}
&C_{n-1}^{m-1}+C_{n-1}^{m}\\
=&\tfrac{\left(n-1\right)!}{(m-1)![n-1-(m-1)]!}+\tfrac{(n-1)!}{m!(n-1-m)!}\\
=&\tfrac{\left(n-1\right)!}{(m-1)!(n-m)!}+\tfrac{(n-1)!}{m!(n-1-m)!}\\
=&\tfrac{m\left(n-1\right)!}{m!(n-m)!}+\tfrac{(n-m)(n-1)!}{m!(n-m)!}\\
=&\tfrac{m\left(n-1\right)!+(n-m)(n-1)!}{m!(n-m)!}\\
=&\tfrac{m\left(n-1\right)!+n!-m(n-1)!}{m!(n-m)!}\\
=&\tfrac{n!}{m!(n-m)!}\\
=&C_n^m
\end{align}
$$

Word代码:

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <msubsup>
    <mi>C</mi>
    <mrow class="MJX-TeXAtom-ORD">
      <mi>n</mi>
    </mrow>
    <mrow class="MJX-TeXAtom-ORD">
      <mi>m</mi>
    </mrow>
  </msubsup>
  <mo>=</mo>
  <mstyle displaystyle="false" scriptlevel="0">
    <mfrac>
      <mrow>
        <mi>n</mi>
        <mo>!</mo>
      </mrow>
      <mrow>
        <mi>m</mi>
        <mo>!</mo>
        <mrow>
          <mo>(</mo>
          <mi>n</mi>
          <mo>&#x2212;<!----></mo>
          <mi>m</mi>
          <mo>)</mo>
        </mrow>
        <mo>!</mo>
      </mrow>
    </mfrac>
  </mstyle>
  <mspace linebreak="newline" />
  <mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true">
    <mtr>
      <mtd />
      <mtd>
        <msubsup>
          <mi>C</mi>
          <mrow class="MJX-TeXAtom-ORD">
            <mi>n</mi>
            <mo>&#x2212;<!----></mo>
            <mn>1</mn>
          </mrow>
          <mrow class="MJX-TeXAtom-ORD">
            <mi>m</mi>
            <mo>&#x2212;<!----></mo>
            <mn>1</mn>
          </mrow>
        </msubsup>
        <mo>+</mo>
        <msubsup>
          <mi>C</mi>
          <mrow class="MJX-TeXAtom-ORD">
            <mi>n</mi>
            <mo>&#x2212;<!----></mo>
            <mn>1</mn>
          </mrow>
          <mrow class="MJX-TeXAtom-ORD">
            <mi>m</mi>
          </mrow>
        </msubsup>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mo>=</mo>
      </mtd>
      <mtd>
        <mstyle displaystyle="false" scriptlevel="0">
          <mfrac>
            <mrow>
              <mrow>
                <mo>(</mo>
                <mi>n</mi>
                <mo>&#x2212;<!----></mo>
                <mn>1</mn>
                <mo>)</mo>
              </mrow>
              <mo>!</mo>
            </mrow>
            <mrow>
              <mo stretchy="false">(</mo>
              <mi>m</mi>
              <mo>&#x2212;<!----></mo>
              <mn>1</mn>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
              <mo stretchy="false">[</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mn>1</mn>
              <mo>&#x2212;<!----></mo>
              <mo stretchy="false">(</mo>
              <mi>m</mi>
              <mo>&#x2212;<!----></mo>
              <mn>1</mn>
              <mo stretchy="false">)</mo>
              <mo stretchy="false">]</mo>
              <mo>!</mo>
            </mrow>
          </mfrac>
        </mstyle>
        <mo>+</mo>
        <mstyle displaystyle="false" scriptlevel="0">
          <mfrac>
            <mrow>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mn>1</mn>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
            <mrow>
              <mi>m</mi>
              <mo>!</mo>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mn>1</mn>
              <mo>&#x2212;<!----></mo>
              <mi>m</mi>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
          </mfrac>
        </mstyle>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mo>=</mo>
      </mtd>
      <mtd>
        <mstyle displaystyle="false" scriptlevel="0">
          <mfrac>
            <mrow>
              <mrow>
                <mo>(</mo>
                <mi>n</mi>
                <mo>&#x2212;<!----></mo>
                <mn>1</mn>
                <mo>)</mo>
              </mrow>
              <mo>!</mo>
            </mrow>
            <mrow>
              <mo stretchy="false">(</mo>
              <mi>m</mi>
              <mo>&#x2212;<!----></mo>
              <mn>1</mn>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mi>m</mi>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
          </mfrac>
        </mstyle>
        <mo>+</mo>
        <mstyle displaystyle="false" scriptlevel="0">
          <mfrac>
            <mrow>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mn>1</mn>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
            <mrow>
              <mi>m</mi>
              <mo>!</mo>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mn>1</mn>
              <mo>&#x2212;<!----></mo>
              <mi>m</mi>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
          </mfrac>
        </mstyle>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mo>=</mo>
      </mtd>
      <mtd>
        <mstyle displaystyle="false" scriptlevel="0">
          <mfrac>
            <mrow>
              <mi>m</mi>
              <mrow>
                <mo>(</mo>
                <mi>n</mi>
                <mo>&#x2212;<!----></mo>
                <mn>1</mn>
                <mo>)</mo>
              </mrow>
              <mo>!</mo>
            </mrow>
            <mrow>
              <mi>m</mi>
              <mo>!</mo>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mi>m</mi>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
          </mfrac>
        </mstyle>
        <mo>+</mo>
        <mstyle displaystyle="false" scriptlevel="0">
          <mfrac>
            <mrow>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mi>m</mi>
              <mo stretchy="false">)</mo>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mn>1</mn>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
            <mrow>
              <mi>m</mi>
              <mo>!</mo>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mi>m</mi>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
          </mfrac>
        </mstyle>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mo>=</mo>
      </mtd>
      <mtd>
        <mstyle displaystyle="false" scriptlevel="0">
          <mfrac>
            <mrow>
              <mi>m</mi>
              <mrow>
                <mo>(</mo>
                <mi>n</mi>
                <mo>&#x2212;<!----></mo>
                <mn>1</mn>
                <mo>)</mo>
              </mrow>
              <mo>!</mo>
              <mo>+</mo>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mi>m</mi>
              <mo stretchy="false">)</mo>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mn>1</mn>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
            <mrow>
              <mi>m</mi>
              <mo>!</mo>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mi>m</mi>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
          </mfrac>
        </mstyle>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mo>=</mo>
      </mtd>
      <mtd>
        <mstyle displaystyle="false" scriptlevel="0">
          <mfrac>
            <mrow>
              <mi>m</mi>
              <mrow>
                <mo>(</mo>
                <mi>n</mi>
                <mo>&#x2212;<!----></mo>
                <mn>1</mn>
                <mo>)</mo>
              </mrow>
              <mo>!</mo>
              <mo>+</mo>
              <mi>n</mi>
              <mo>!</mo>
              <mo>&#x2212;<!----></mo>
              <mi>m</mi>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mn>1</mn>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
            <mrow>
              <mi>m</mi>
              <mo>!</mo>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mi>m</mi>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
          </mfrac>
        </mstyle>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mo>=</mo>
      </mtd>
      <mtd>
        <mstyle displaystyle="false" scriptlevel="0">
          <mfrac>
            <mrow>
              <mi>n</mi>
              <mo>!</mo>
            </mrow>
            <mrow>
              <mi>m</mi>
              <mo>!</mo>
              <mo stretchy="false">(</mo>
              <mi>n</mi>
              <mo>&#x2212;<!----></mo>
              <mi>m</mi>
              <mo stretchy="false">)</mo>
              <mo>!</mo>
            </mrow>
          </mfrac>
        </mstyle>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mo>=</mo>
      </mtd>
      <mtd>
        <msubsup>
          <mi>C</mi>
          <mi>n</mi>
          <mi>m</mi>
        </msubsup>
      </mtd>
    </mtr>
  </mtable>
</math>

欢迎挑错。


版权声明:本文为weixin_36171392原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。