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

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

真心推荐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_n Cnm的值等于杨辉三角形第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 n n个不同元素中,任取 m m m m ≤ n m\le n mn m , n m,n m,n均为自然数,下同)个不同的元素按照一定的顺序排成一列,叫做从 n n n个不同元素中取出 m m m个元素的一个排列;从 n n n个不同元素中取出 m ( m ≤ n ) m\left(m\le n\right) m(mn)个元素的所有排列的个数,叫做从 n n n个不同元素中取出 m m m个元素的排列数,用符号 A n m A^m_n Anm表示。
计算公式: 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 n n个不同元素中,任取 m ( m ≤ n ) m\left(m\le n\right) m(mn)个元素并成一组,叫做从 n n n个不同元素中取出 m m m个元素的一个组合;从 n n n个不同元素中取出 m ( m ≤ n ) m\left(m\le n\right) m(mn)个元素的所有组合的个数,叫做从 n n n个不同元素中取出 m m m个元素的组合数。用符号 C n m C^m_n Cnm表示。
计算公式: 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}_n Cnm=Cnnm应该属于性质公式。。。

符号:

C − C o m b i n a t i o n C -Combination CCombination 组合数
A − A r r a n g e m e n t A -Arrangement AArrangement 排列数(在旧教材为 P − P e r m u t a t i o n P-Permutation PPermutation
N − N u m b e r N -Number NNumber 元素的总个数
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>

欢迎挑错。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值