酷代码 AI
菜单
服务商

c++雪人部落的机器上有10盏灯,一开始所有灯都是亮的,只需要告诉它起点位置和终点位置,就会把从起点到终点之间的所有灯都熄灭。雪人会说出两次起点和终点坐标,请你帮助众人编写一段程序,输出按照雪人的要求关灯后,机器上还亮着的灯的数量。 输入: 输入包括两行,表示雪人说的两次起点和终点。 每一行包含两个整数,第一个整数表示这次操作的起点,第二个整数表示终点。 输出: 输出包括一行,包含一个整数,表示两次操作后,机器上还亮着的灯的数量

以下是实现该功能的 C++ 代码: ```cpp #include <iostream> #include <vector> int main() { // 初始化 10 盏灯,初始状态都为亮(用 true 表示) std::vector<bool> lights(10, true); // 处理第一次关灯操作 int start1, end1; std::cin >> start1 >> end1; // 确保起点和终点在有效范围内 start1 = std::max(0, start1 - 1); end1 = std::min(9, end1 - 1); // 熄灭从起点到终点的灯 for (int i = start1; i <= end1; ++i) { lights[i] = false; } // 处理第二次关灯操作 int start2, end2; std::cin >> start2 >> end2; // 确保起点和终点在有效范围内 start2 = std::max(0, start2 - 1); end2 = std::min(9, end2 - 1); // 熄灭从起点到终点的灯 for (int i = start2; i <= end2; ++i) { lights[i] = false; } // 统计还亮着的灯的数量 int count = 0; for (bool light : lights) { if (light) { ++count; } } // 输出结果 std::cout << count << std::endl; return 0; } ``` 代码说明: 1. 初始化灯的状态:使用 `std::vector<bool>` 来表示 10 盏灯的状态,初始时所有灯都为亮(`true`)。 2. 处理第一次关灯操作:读取起点和终点坐标,将其转换为 0 到 9 的索引范围,然后将该范围内的灯熄灭(设置为 `false`)。 3. 处理第二次关灯操作:同样读取起点和终点坐标,转换为有效索引范围,将该范围内的灯熄灭。 4. 统计亮着的灯的数量:遍历 `lights` 向量,统计值为 `true` 的元素个数。 5. 输出结果:将亮着的灯的数量输出到控制台。 复杂度分析: - 时间复杂度:$O(n)$,其中 $n$ 是灯的数量(这里 $n = 10$)。 - 空间复杂度:$O(n)$,主要用于存储灯的状态。 [2025-12-26 19:31:34 | AI问答 | 601点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多