• 组合数(2)获取C(n,k)组合数列表的QT实现


    1)工程文件

    1. QT = core
    2. CONFIG += c++17 cmdline
    3. # You can make your code fail to compile if it uses deprecated APIs.
    4. # In order to do so, uncomment the following line.
    5. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
    6. SOURCES += \
    7. main.cpp
    8. # Default rules for deployment.
    9. qnx: target.path = /tmp/$${TARGET}/bin
    10. else: unix:!android: target.path = /opt/$${TARGET}/bin
    11. !isEmpty(target.path): INSTALLS += target

    2)主程序

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. const int N = 10;
    6. const int K = 5;
    7. vectorint>> getCombinationvector(int nums[],int ncount)
    8. {
    9. vectorint>> retvv = vectorint>>();
    10. retvv.push_back(vector<int>());
    11. for (int n=0; n
    12. int size = retvv.size();
    13. for (int i = 0; i < size; i++) {
    14. vector<int> newSub = vector<int>(retvv[i]);
    15. newSub.push_back(n);
    16. retvv.push_back(newSub);
    17. }
    18. }
    19. return retvv;
    20. }
    21. void showCombinationvector( vectorint>> va )
    22. {
    23. std::cout << "C(" << N <<"," << K <<") = " << va.size() << "\n";
    24. std::cout << "[ \n";
    25. for (int var = 0; var < va.size(); ++var) {
    26. std::cout << " [ ";
    27. for(int j=0; j< va[var].size();j++)
    28. {
    29. std::cout << va[var][j] << " ";
    30. }
    31. std::cout << "]\n";
    32. }
    33. std::cout << "]\n";
    34. }
    35. vectorint>> getCombineNK(int n, int k) {
    36. vector<int> nums = vector<int>();
    37. for(int i = 1; i < k + 1; ++i)
    38. nums.push_back(i);
    39. nums.push_back(n + 1);
    40. vectorint>> retvv = vectorint>>();
    41. int j = 0;
    42. while (j < k) {
    43. retvv.push_back(vector<int>(nums.begin(), nums.begin() + k));
    44. j = 0;
    45. while ((j < k) && (nums[j + 1] == nums[j] + 1))
    46. {
    47. nums[j] = j + 1;
    48. j++;
    49. }
    50. nums[j] ++ ;
    51. }
    52. return retvv;
    53. }
    54. int main(int argc, char *argv[])
    55. {
    56. QCoreApplication a(argc, argv);
    57. int test[] = {1,2,3,4,5};
    58. //vector> va = getCombinationvector(test, 5);
    59. vectorint>> va = getCombineNK(10, 5);
    60. showCombinationvector(va);
    61. return a.exec();
    62. }

    3)运行结果

    C(10,5) = 252

      [ 1 2 3 4 5 ]
      [ 1 2 3 4 6 ]
      [ 1 2 3 5 6 ]
      [ 1 2 4 5 6 ]
      [ 1 3 4 5 6 ]
      [ 2 3 4 5 6 ]
      [ 1 2 3 4 7 ]
      [ 1 2 3 5 7 ]
      [ 1 2 4 5 7 ]
      [ 1 3 4 5 7 ]
      [ 2 3 4 5 7 ]
      [ 1 2 3 6 7 ]
      [ 1 2 4 6 7 ]
      [ 1 3 4 6 7 ]
      [ 2 3 4 6 7 ]
      [ 1 2 5 6 7 ]
      [ 1 3 5 6 7 ]
      [ 2 3 5 6 7 ]
      [ 1 4 5 6 7 ]
      [ 2 4 5 6 7 ]
      [ 3 4 5 6 7 ]
      [ 1 2 3 4 8 ]
      [ 1 2 3 5 8 ]
      [ 1 2 4 5 8 ]
      [ 1 3 4 5 8 ]
      [ 2 3 4 5 8 ]
      [ 1 2 3 6 8 ]
      [ 1 2 4 6 8 ]
      [ 1 3 4 6 8 ]
      [ 2 3 4 6 8 ]
      [ 1 2 5 6 8 ]
      [ 1 3 5 6 8 ]
      [ 2 3 5 6 8 ]
      [ 1 4 5 6 8 ]
      [ 2 45 6 8 ]
      [ 3 4 5 6 8 ]
      [ 1 2 3 7 8 ]
      [ 1 2 4 7 8 ]
      [ 1 3 4 7 8 ]
      [ 2 3 4 7 8 ]
      [ 1 2 5 7 8 ]
      [ 1 3 5 7 8 ]
      [ 2 3 5 7 8 ]
      [ 1 4 5 7 8 ]
      [ 2 4 5 7 8 ]
      [ 3 4 5 7 8 ]
      [ 1 2 6 7 8 ]
      [ 1 3 6 7 8 ]
      [ 2 3 6 7 8 ]
      [ 1 4 6 7 8 ]
      [ 2 4 6 7 8 ]
      [ 3 4 6 7 8 ]
      [ 1 5 6 7 8 ]
      [ 2 5 6 7 8 ]
      [ 3 5 6 7 8 ]
      [ 4 5 6 7 8 ]
      [ 1 2 3 4 9 ]
      [ 1 2 3 5 9 ]
      [ 1 2 4 5 9 ]
      [ 1 3 4 5 9 ]
      [ 2 3 4 5 9 ]
      [ 1 2 3 6 9 ]
      [ 1 2 4 6 9 ]
      [ 1 3 4 6 9 ]
      [ 2 3 4 6 9 ]
      [ 1 2 5 6 9 ]
      [ 1 3 5 6 9 ]
      [ 2 3 5 6 9 ]
      [ 1 4 5 6 9 ]
      [ 2 4 5 6 9 ]
      [ 3 4 5 6 9 ]
      [ 1 2 3 7 9 ]
      [ 1 2 4 7 9 ]
      [ 1 3 4 7 9 ]
      [ 2 3 4 7 9 ]
      [ 1 2 5 7 9 ]
      [ 1 3 5 7 9 ]
      [ 2 3 5 7 9 ]
      [ 1 4 5 7 9 ]
      [ 2 4 5 7 9 ]
      [ 3 4 5 7 9 ]
      [ 1 2 6 7 9 ]
      [ 1 3 6 7 9 ]
      [ 2 3 6 7 9 ]
      [ 1 4 6 7 9 ]
      [ 2 4 6 7 9 ]
      [ 3 4 6 7 9 ]
      [ 1 5 6 7 9 ]
      [ 2 5 6 7 9 ]
      [ 3 5 6 7 9 ]
      [ 4 5 6 7 9 ]
      [ 1 2 3 8 9 ]
      [ 1 2 4 8 9 ]
      [ 1 3 4 8 9 ]
      [ 2 3 4 8 9 ]
      [ 1 2 5 8 9 ]
      [ 1 3 5 8 9 ]
      [ 2 3 5 8 9 ]
      [ 1 4 5 8 9 ]
      [ 2 45 8 9 ]
      [ 3 4 5 8 9 ]
      [ 1 2 6 8 9 ]
      [ 1 3 6 8 9 ]
      [ 2 3 6 8 9 ]
      [ 1 4 6 8 9 ]
      [ 2 4 6 8 9 ]
      [ 3 4 6 8 9 ]
      [ 1 5 6 8 9 ]
      [ 2 5 6 8 9 ]
      [ 3 5 6 8 9 ]
      [ 4 5 6 8 9 ]
      [ 1 2 7 8 9 ]
      [ 1 3 7 8 9 ]
      [ 2 3 7 8 9 ]
      [ 1 4 7 8 9 ]
      [ 2 4 7 8 9 ]
      [ 3 4 7 8 9 ]
      [ 1 5 7 8 9 ]
      [ 2 5 7 8 9 ]
      [ 3 5 7 8 9 ]
      [ 4 5 7 8 9 ]
      [ 1 6 7 8 9 ]
      [ 2 6 7 8 9 ]
      [ 3 6 7 8 9 ]
      [ 4 6 7 8 9 ]
      [ 5 6 7 8 9 ]
      [ 1 2 3 4 10 ]
      [ 1 2 3 5 10 ]
      [ 1 2 4 5 10 ]
      [ 1 3 4 5 10 ]
      [ 2 3 4 5 10 ]
      [ 1 2 3 6 10 ]
      [ 1 2 4 6 10 ]
      [ 1 3 4 6 10 ]
      [ 2 3 4 6 10 ]
      [ 1 2 5 6 10 ]
      [ 1 3 5 6 10 ]
      [ 2 3 5 6 10 ]
      [ 1 4 5 6 10 ]
      [ 2 4 5 6 10 ]
      [ 3 4 5 6 10 ]
      [ 1 2 3 7 10 ]
      [ 1 2 4 7 10 ]
      [ 1 3 4 7 10 ]
      [ 2 3 4 7 10 ]
      [ 1 2 5 7 10 ]
      [ 1 3 5 7 10 ]
      [ 2 3 5 7 10 ]
      [ 1 4 5 7 10 ]
      [ 2 4 5 7 10 ]
      [ 3 4 5 7 10 ]
      [ 1 2 6 7 10 ]
      [ 1 3 6 7 10 ]
      [ 2 3 6 7 10 ]
      [ 1 4 6 7 10 ]
      [ 2 4 6 7 10 ]
      [ 3 4 6 7 10 ]
      [ 1 5 6 7 10 ]
      [ 2 5 6 7 10 ]
      [ 3 5 6 7 10 ]
      [ 4 5 6 7 10 ]
      [ 1 2 3 8 10 ]
      [ 1 2 4 8 10 ]
      [ 1 3 4 8 10 ]
      [ 2 3 4 8 10 ]
      [ 1 2 5 8 10 ]
      [ 1 3 5 8 10 ]
      [ 2 3 5 8 10 ]
      [ 1 4 5 8 10 ]
      [ 2 4 5 8 10 ]
      [ 3 4 5 8 10 ]
      [ 1 2 6 8 10 ]
      [ 1 3 6 8 10 ]
      [ 2 3 6 8 10 ]
      [ 1 4 6 8 10 ]
      [ 2 4 6 8 10 ]
      [ 3 4 6 8 10 ]
      [ 1 5 6 8 10 ]
      [ 2 5 6 8 10 ]
      [ 3 5 6 8 10 ]
      [ 4 5 6 8 10 ]
      [ 1 2 7 8 10 ]
      [ 1 3 7 8 10 ]
      [ 2 3 7 8 10 ]
      [ 1 4 7 8 10 ]
      [ 2 4 7 8 10 ]
      [ 3 4 7 8 10 ]
      [ 1 5 7 8 10 ]
      [ 2 5 7 8 10 ]
      [ 3 5 7 8 10 ]
      [ 4 5 7 8 10 ]
      [ 1 6 7 8 10 ]
      [ 2 6 7 8 10 ]
      [ 3 6 7 8 10 ]
      [ 4 6 7 8 10 ]
      [ 2 6 8 9 10 ]
      [ 3 6 8 9 10 ]
      [ 4 6 8 9 10 ]
      [ 5 6 8 9 10 ]
      [ 1 7 8 9 10 ]
      [ 2 7 8 9 10 ]
      [ 3 7 8 9 10 ]
      [ 4 7 8 9 10 ]
      [ 5 7 8 9 10 ]
      [ 6 7 8 9 10 ]
    ]

  • 相关阅读:
    在基于ABP框架的前端项目Vue&Element项目中采用日期格式处理,对比Moment.js和day.js的处理
    ArcgisForJS如何使用ArcGIS Server发布的GP服务?
    二叉树中和为某一值的路径(二)
    Gradle多模块项目配置
    SpringMVC基础
    linux源码安装postgresql以及smlar插件
    python记录-01
    论文笔记:LBCF: A Large-Scale Budget-Constrained Causal Forest Algorithm
    「PAT乙级真题解析」Basic Level 1106 2019数列 (问题分析+完整步骤+伪代码描述+提交通过代码)
    Edge 无法登录/同步问题【一招搞定】
  • 原文地址:https://blog.csdn.net/zkmrobot/article/details/133827759