1. 逻辑运算符表示方法
    1. $and$(与)
      1. &&(C语言)
      2. $\wedge$(数学)
    2. $or$(或)
      1. ||(C语言)
      2. $\vee$(数学)
    3. $not$(非)
      1. !(C语言)
      2. $\neg$(数学)
  2. 或运算短路
    1. 当或运算执行时,如第一个条件成立,第二个条件表达式将不会被执行。
  3. 加法原理
    1. 做一件事情,完成它有$n$类方式,第一类方式有$M_1$种方法,第二类方式有$M_2$种方法,$\cdots$,第$n$类方式有$M_n$种方法,那么完成这件事情共有$M_1 + M_2 + \cdots + M_n$种方法。
  4. 乘法原理
    1. 做一件事,完成它需要分成$n$个步骤,做第一步有$M_1$种不同的方法,做第二步有$M_2$种不同的方法,$\cdots$,做第$n$步有$M_n$种不同的方法,那么完成这件事共有$M_1 \times M_2 \times \cdots \times M_n$种不同的方法。
  5. 排列组合
    1. 从n个不同元素中取出m个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数。
    2. 排列(表示从n中按顺序取出m个,Arrangement) :$A^m_n = \frac{ n! }{ (n - m)! }$
    3. 组合(表示从n中取出m个,Combinatorial):$C^m_n = \frac{ n! }{ m! \times (n - m)! }$
    4. 插空法(不相邻问题):先将其他元素排好,再将指定的不相邻的元素插入已排好元素的间隙或两端,从而将问题解决。
    5. 捆绑法(相邻问题):将要求相邻的几个元素绑在一起,把他们视为一个整体,与其他的元素进行排列,再将这几个元素进行排列。
    6. 分割(表示从$m$个元素中取出$n$份,Split)
      1. 每份至少一个元素:$S^m_n=C^{ n-1 }_{ m-1 }$
      2. 每份至少零个元素:$S^m_n=C^{ n-1 }_{ m+n-1 }$
    7. 环形(表示$m-1$个元素进行全排列,Loop):$L_m=( m-1 )!$