酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

c++ 学校将在一天内举办 n 个活动,已知每个活动开始时间和结束时间(精确到分钟的闭区间)。皮皮所在的校电视台的同学们负责给这些活动拍摄照片,每个活动都至少需要拍摄一次,由于校电视台的同学们需要尽量多的聚集开会,因此拍照最好大家在某一时间点一起出动,同时拍摄尽可能多的活动,已知拍摄人数和设备足够覆盖所有活动,且忽略拍摄花费的时间。大家决定提前规划好,出动尽量少的次数,完成拍摄。

以下是使用 C++ 解决此问题的代码: ```cpp #include <iostream> #include <vector> #include <algorithm> // 活动结构体 struct Activity { int start; int end; }; // 比较函数,用于对活动按结束时间升序排序 bool compareActivities(Activity a, Activity b) { return a.end < b.end; } // 贪心算法获取最少出动次数 int minShots(std::vector<Activity> activities) { int shots = 0; int currentTime = 0; std::sort(activities.begin(), activities.end(), compareActivities); for (const auto& activity : activities) { if (activity.start > currentTime) { shots++; currentTime = activity.end; } } return shots; } int main() { std::vector<Activity> activities = { {10, 20}, {15, 30}, {5, 15} }; int minShotsNeeded = minShots(activities); std::cout << "最少出动次数: " << minShotsNeeded << std::endl; return 0; } ``` 注意点: 1. 输入的活动时间数据要确保准确无误,否则可能导致计算结果错误。 2. 排序函数的正确性对于后续的贪心算法逻辑至关重要。 3. 考虑边界情况,如没有活动或只有一个活动的情况。 [2024-12-20 19:58:49 | AI写代码神器 | 350点数解答]

相关提问