Combination.h 744 B

1234567891011121314151617181920212223242526272829303132333435
  1. //
  2. // Created by 李洋 on 2023/10/19.
  3. //
  4. #ifndef LEECODE_C_COMBINATION_H
  5. #define LEECODE_C_COMBINATION_H
  6. #include <iostream>
  7. #include <vector>
  8. // 计算组合数 C(n, m)
  9. int calculateCnm(int n, int m) {
  10. if (m < 0 || m > n) {
  11. return 0;
  12. }
  13. if (m > n / 2) {
  14. m = n - m; // 优化,使用较小的 m 提高效率
  15. }
  16. std::vector<std::vector<int>> dp(n + 1, std::vector<int>(m + 1, 0));
  17. for (int i = 0; i <= n; i++) {
  18. for (int j = 0; j <= std::min(i, m); j++) {
  19. if (j == 0 || j == i) {
  20. dp[i][j] = 1;
  21. } else {
  22. dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
  23. }
  24. }
  25. }
  26. return dp[n][m];
  27. }
  28. #endif //LEECODE_C_COMBINATION_H
备用站点 当前处于降级运行的备用站点,仅供应急访问,数据和功能可能不是最新。