以下是使用vector实现CSP-J2020优秀的拆分的示例代码:

#include <iostream>
#include <vector>

using namespace std;

// 判断一个数是否为质数
bool isPrime(int num) {
    if (num < 2) {
        return false;
    }
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

// 递归拆分函数
void partition(vector<int>& nums, vector<vector<int>>& result, vector<int>& current, int start) {
    int target = 0;
    for (int i = 0; i < current.size(); i++) {
        target += current[i];
    }
    if (target == nums[0]) {
        result.push_back(current);
        return;
    }
    for (int i = start; i < nums.size(); i++) {
        if (current.size() > 0 && !isPrime(current.back() + nums[i])) {
            continue;  // 如果当前组合最后一个数和当前数的和不是质数,则跳过
        }
        current.push_back(nums[i]);
        partition(nums, result, current, i + 1);
        current.pop_back();
    }
}

int main() {
    int n;
    cin >> n;
    vector<int> nums(n);
    for (int i = 0; i < n; i++) {
        cin >> nums[i];
    }
    vector<vector<int>> result;
    vector<int> current;
    partition(nums, result, current, 0);

    for (int i = 0; i < result.size(); i++) {
        for (int j = 0; j < result[i].size(); j++) {
            cout << result[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

使用上述代码,你可以输入一个整数n,表示待拆分的数的个数,然后输入n个正整数,表示待拆分的数。程序会输出所有拆分结果,每行输出一个拆分结果,拆分结果按照从小到大的顺序输出

解 CSP-J2020优秀的拆分要求使用vector

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

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