以下是使用 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点数解答]