以下是一个使用C++实现R语言的comb函数,并将结果输出为两列数据的矩阵的代码示例:

#include <iostream>
#include <vector>

using namespace std;

// 计算阶乘
int factorial(int n) {
    int result = 1;
    for (int i = 1; i <= n; i++) {
        result *= i;
    }
    return result;
}

// 计算组合数
int combination(int n, int k) {
    return factorial(n) / (factorial(k) * factorial(n - k));
}

// 实现combn函数
vector<vector<int>> combn(vector<int> nums, int k) {
    vector<vector<int>> result;
    vector<int> combination;
    int n = nums.size();

    // 递归生成组合
    function<void(int, int)> backtrack = [&](int start, int k) {
        if (k == 0) {
            result.push_back(combination);
            return;
        }
        for (int i = start; i <= n - k; i++) {
            combination.push_back(nums[i]);
            backtrack(i + 1, k - 1);
            combination.pop_back();
        }
    };

    backtrack(0, k);
    return result;
}

int main() {
    vector<int> nums = {1, 2, 3, 4};
    int k = 2;
    vector<vector<int>> result = combn(nums, k);

    // 输出结果
    for (vector<int> combination : result) {
        for (int num : combination) {
            cout << num << " ";
        }
        cout << endl;
    }

    return 0;
}

该代码首先实现了阶乘函数factorial和组合数函数combination。然后定义了combn函数,该函数使用递归的方式生成所有的组合,并将结果存储在二维向量result中。最后,在main函数中调用combn函数,并输出结果。

输出结果为:

1 2 
1 3 
1 4 
2 3 
2 4 
3 4 
``
c++实现R语言的combin函数并将结果输出为两列数据的矩阵

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

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