以下是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个元素,并将结果输出为两列数据的矩阵

c++实现R语言的combn函数并将结果输出为两列数据的矩阵

原文地址: https://www.cveoy.top/t/topic/iqY5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录