1 条题解
-
0
题解
本题的核心是根据每个节食者的起始体重和节食天数,计算出节目当天的体重,然后按照体重从高到低对节食者进行排序并输出姓名。
代码(c++)
#include <iostream> #include <vector> #include <algorithm> // 定义节食者结构体 struct Dieter { std::string name; int daysOnDiet; int startingWeight; int currentWeight; Dieter(const std::string& n, int d, int s) : name(n), daysOnDiet(d), startingWeight(s) { currentWeight = startingWeight - daysOnDiet; } }; // 比较函数,用于按当前体重降序排序 bool compare(const Dieter& a, const Dieter& b) { return a.currentWeight > b.currentWeight; } int main() { std::string line; bool firstSet = true; while (std::cin >> line) { if (line == "START") { std::vector<Dieter> dieters; while (std::cin >> line && line != "END") { std::string name = line; int days, startWeight; std::cin >> days >> startWeight; dieters.emplace_back(name, days, startWeight); } // 按当前体重降序排序 std::sort(dieters.begin(), dieters.end(), compare); // 如果不是第一个数据集,输出一个空行 if (!firstSet) { std::cout << std::endl; } firstSet = false; // 输出排序后的节食者姓名 for (const auto& dieter : dieters) { std::cout << dieter.name << std::endl; } } } return 0; }
代码解释:
结构体 Dieter:用于存储每个节食者的姓名、节食天数、起始体重和当前体重。在构造函数中计算当前体重。 比较函数 compare:用于按当前体重降序排序。 主函数 main: 读取输入,直到文件结束。 当遇到 “START” 时,开始处理一个新的数据集。 读取节食者信息,创建 Dieter 对象并存储在向量中。 当遇到 “END” 时,对向量中的节食者按当前体重降序排序。 输出排序后的节食者姓名,数据集之间用空行分隔。
- 1
信息
- ID
- 1219
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 5
- 已通过
- 1
- 上传者