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