组合数学初步
组合
对于简单组合问题,直接将其方案计算即可,当一个组合中的元素为0时,它天然的结果为0,会无法组成方案
for(int i = 1; i <= n; ++ i) {//n-2
for(int j = i + 1; j <= n; ++ j) {//n-1
for(int k = j + 1; k <= n; ++ k) {
++ ans;
}
}
}
i,j枚举到n-2和n-1也可
帕斯卡尔三角
帕斯卡尔公式:C(n, m) = C(n - 1, m - 1) + C(n - 1, m);,通过帕斯卡公式可以与处理出一定范围内all组合方案,O(1)的处理查询
即方案 = 选最后一个,从前面选其他 + 不选最后,从前面选all
for(int i = 0; i <= n; ++ i) {
c[i][0] = 1;
for(int j = 1; j <= i; ++ j) {
c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
}
}

浙公网安备 33010602011771号