以下是使用 C++ 编写的解决方案:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> distributeApples(int N) {
    vector<int> result;

    // 每个人至少得到一个苹果
    result.push_back(1);
    result.push_back(1);
    result.push_back(N - 2);

    // 如果N是偶数,则将第三个人得到的苹果数量加1,使得有两个人得到的苹果数一样
    if (N % 2 == 0) {
        result[2]++;
    }

    return result;
}

int main() {
    int t;
    cin >> t;

    while (t--) {
        int N;
        cin >> N;

        vector<int> apples = distributeApples(N);

        // 输出三个人分得的苹果数量
        for (int i = 0; i < 3; i++) {
            cout << apples[i] << ' ';  // 将空格改为 ' '  
        }
        cout << endl;
    }

    return 0;
}

这个解决方案首先定义了一个函数distributeApples,用于计算满足条件的苹果分配方案。根据题目的要求,第一个人和第二个人分别分得一个苹果,然后第三个人分得剩余的苹果。如果总苹果数N是偶数,则将第三个人得到的苹果数量加1,使得有两个人得到的苹果数一样。

然后在main函数中,根据输入的数据进行循环处理。对于每组数据,先调用distributeApples函数得到分配方案,然后输出每个人分得的苹果数量。

这样就可以解决这个问题了。

C++ 解题:苹果分配问题 (字典序最小解)

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

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