C++ 解题:苹果分配问题 (字典序最小解)
以下是使用 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函数得到分配方案,然后输出每个人分得的苹果数量。
这样就可以解决这个问题了。
原文地址: https://www.cveoy.top/t/topic/UPY 著作权归作者所有。请勿转载和采集!