c++实现R语言的combn函数并将结果输出为两列数据的矩阵
以下是C++实现R语言的combn函数,并将结果输出为两列数据的矩阵的示例代码:
#include <iostream>
#include <vector>
using namespace std;
// 递归实现combn函数
void combnRecursion(vector<int>& nums, vector<int>& combination, int start, int k, vector<vector<int>>& result) {
// 终止条件:已经选择了k个数字
if (k == 0) {
result.push_back(combination);
return;
}
// 递归选择数字
for (int i = start; i < nums.size(); i++) {
combination.push_back(nums[i]);
combnRecursion(nums, combination, i + 1, k - 1, result);
combination.pop_back();
}
}
// combn函数
vector<vector<int>> combn(vector<int>& nums, int k) {
vector<vector<int>> result;
vector<int> combination;
combnRecursion(nums, combination, 0, k, result);
return result;
}
// 输出矩阵
void printMatrix(vector<vector<int>>& matrix) {
for (int i = 0; i < matrix.size(); i++) {
for (int j = 0; j < matrix[i].size(); j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
int main() {
vector<int> nums = {1, 2, 3, 4};
int k = 2;
vector<vector<int>> result = combn(nums, k);
printMatrix(result);
return 0;
}
输出结果为:
1 2
1 3
1 4
2 3
2 4
3 4
这是将nums中的元素进行组合,每个组合中包含k个元素,并将结果输出为两列数据的矩阵
原文地址: https://www.cveoy.top/t/topic/iqY5 著作权归作者所有。请勿转载和采集!