组合数(2)获取C(n,k)组合数列表的QT实现
1)工程文件
QT = coreCONFIG += c++17 cmdline# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
2)主程序
#include <QCoreApplication>
#include <vector>
#include <iostream>using namespace std;
const int N = 10;
const int K = 5;vector<vector<int>> getCombinationvector(int nums[],int ncount)
{vector<vector<int>> retvv = vector<vector<int>>();retvv.push_back(vector<int>());for (int n=0; n<ncount; n++) {int size = retvv.size();for (int i = 0; i < size; i++) {vector<int> newSub = vector<int>(retvv[i]);newSub.push_back(n);retvv.push_back(newSub);}}return retvv;
}void showCombinationvector( vector<vector<int>> va )
{std::cout << "C(" << N <<"," << K <<") = " << va.size() << "\n";std::cout << "[ \n";for (int var = 0; var < va.size(); ++var) {std::cout << " [ ";for(int j=0; j< va[var].size();j++){std::cout << va[var][j] << " ";}std::cout << "]\n";}std::cout << "]\n";
}vector<vector<int>> getCombineNK(int n, int k) {vector<int> nums = vector<int>();for(int i = 1; i < k + 1; ++i)nums.push_back(i);nums.push_back(n + 1);vector<vector<int>> retvv = vector<vector<int>>();int j = 0;while (j < k) {retvv.push_back(vector<int>(nums.begin(), nums.begin() + k));j = 0;while ((j < k) && (nums[j + 1] == nums[j] + 1)){nums[j] = j + 1;j++;}nums[j] ++ ;}return retvv;
}int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);int test[] = {1,2,3,4,5};//vector<vector<int>> va = getCombinationvector(test, 5);vector<vector<int>> va = getCombineNK(10, 5);showCombinationvector(va);return a.exec();
}
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 ]
]