C++ 实现:从文件读取闭区间求最小整数集合元素个数及开发注意点
```cpp #include <iostream> #include <fstream> #include <vector> #include <algorithm> // 定义一个结构体来表示闭区间 struct Interval { int start; int end; }; // 比较函数,用于按区间的结束位置进行排序 bool compareIntervals(const Interval& a, const Interval& b) { return a.end < b.end; } int main() { // 打开输入文件 std::ifstream inputFile("input.txt"); if (!inputFile.is_open()) { std::cerr << "无法打开文件!" << std::endl; return 1; } int n; // 读取闭区间的数目 inputFile >> n; std::vector<Interval> intervals(n); // 读取每个闭区间的开始和结束值 for (int i = 0; i < n; ++i) { inputFile >> intervals[i].start >> intervals[i].end; } inputFile.close(); // 按区间的结束位置对所有区间进行排序 std::sort(intervals.begin(), intervals.end(), compareIntervals); int count = 0; int lastSelected = -1; // 遍历排序后的区间 for (const auto& interval : intervals) { // 如果当前区间不包含之前选择的整数 if (interval.start > lastSelected) { // 选择当前区间的结束值作为集合中的元素 lastSelected = interval.end; // 集合元素个数加1 ++count; } } // 输出满足条件的最小集合的元素个数 std::cout << count << std::endl; return 0; } ``` 代码解释: 1. 定义`Interval`结构体来表示闭区间,包含`start`和`end`两个成员。 2. `compareIntervals`函数用于按区间的结束位置对区间进行排序。 3. 从文件中读取闭区间的数目和每个区间的开始和结束值。 4. 对所有区间按结束位置进行排序。 5. 遍历排序后的区间,若当前区间不包含之前选择的整数,则选择当前区间的结束值作为集合中的元素,并增加集合元素个数。 6. 输出满足条件的最小集合的元素个数。 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 文件操作时,要确保文件能够成功打开,否则会导致程序崩溃。 2. 排序函数的实现要正确,否则可能会影响最终结果。 3. 遍历区间时,要正确判断当前区间是否包含之前选择的整数,避免逻辑错误。 ######[AI写代码神器 | 620点数解答 | 2025-08-11 16:36:04]
- Python实现:随机录入45位学生四次成绩函数大揭秘(GPT | 477点数解答 | 2024-12-17 17:00:35)363
- Python实现班级45位同学成绩生成、总评计算及分数统计(字节豆包 | 579点数解答 | 2024-12-21 11:55:01)252
- Python实现45位学生四次成绩随机录入及输出(GPT | 441点数解答 | 2024-12-21 21:02:22)260
- Python实战:45位同学成绩生成、总评计算与分数统计揭秘(字节豆包 | 688点数解答 | 2024-12-22 10:14:17)248
- 批处理文件:依据参数表.xlsx精准修改文件.txt中p、t、s值(GPT | 811点数解答 | 2024-12-05 12:58:37)399
- 用批处理和Python实现“参数表.xlsx”与“文件.txt”数据匹配及修改(讯飞星火 | 531点数解答 | 2024-12-05 13:20:42)380
- 批处理文件:依据参数表.xlsx精准修改文件.txt特定参数值(阿里通义 | 495点数解答 | 2024-12-05 13:22:26)358
- 判断超级幸运数:满足“纯4/7数位”或“4/7总个数为4或7”的整数计数(阿里通义 | 965点数解答 | 2026-03-13 12:15:06)36
- 代码填空挑战:完成正态分布、随机数生成及数据处理代码(阿里通义 | 506点数解答 | 2025-03-23 14:32:14)329
- 挑战!完成代码填空解锁数据处理奥秘(字节豆包 | 116点数解答 | 2025-03-26 22:22:15)349
- 挑战填空!完成这段 NumPy 代码实现数据生成与保存(DeepSeek | 178点数解答 | 2025-03-26 22:26:30)410
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)362