酷代码 AI
菜单
服务商

吊桥铺木问题:C++条件筛选与累加终止逻辑实现

好的,我们先来分析一下题目要求,然后用 C++ 编写代码。 ## 🧠 问题分析 1. **输入**:第一行是整数 `n`,表示有 `n` 块木头。 接下来 `n` 行,每行两个整数:`长度` 和 `宽度`。 2. **规则**: - 只有长度 **≥ 5** 的木头才能放到吊桥上。 - 按照输入顺序依次判断并放置。 - 当已放置木头的 **宽度之和 ≥ 10** 时,停止放置。 - 输出:最终放置的 **木头数量** 和 **总宽度**。 3. **注意**: - 即使某块木头长度合格,如果放置它之前宽度总和已经 ≥10,也不应再放置。 - 输出的是实际放置的木头的数量和它们的总宽度。 --- ## 📝 算法步骤 1. 读入 `n`。 2. 初始化 `count = 0`(放置的木头数量),`total_width = 0`(总宽度)。 3. 循环 `n` 次,每次读入 `length` 和 `width`: - 如果 `total_width >= 10`,直接跳过后续所有木头(可以提前结束循环)。 - 如果 `length >= 5`: - `count++` - `total_width += width` 4. 输出 `count` 和 `total_width`。 --- ## 💻 C++ 代码实现 ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; int count = 0; // 放置的木头数量 int total_width = 0; // 放置的木头的总宽度 for (int i = 0; i < n; i++) { int length, width; cin >> length >> width; // 如果已经达到宽度要求,不再处理后续木头 if (total_width >= 10) { continue; // 或者直接 break 也可以,因为题目说“依次”放,但宽度够了后面即使合格也不放 // 根据样例,应该是 continue 跳过,但为了效率可以直接 break。 // 我们这里用 break 更符合逻辑:一旦满足条件,后续木头不再考虑。 } // 检查长度是否合格 if (length >= 5) { count++; total_width += width; } } cout << count << " " << total_width << endl; return 0; } ``` --- ## 🔍 代码解释 - `int n; cin >> n;`:读入木头总数。 - `for` 循环依次处理每块木头。 - `if (total_width >= 10) { break; }`:一旦总宽度达到 10,立即终止循环,不再看后面的木头。 - `if (length >= 5)`:长度合格才计入。 - 最后输出计数和总宽度。 --- ## ✅ 测试样例 **样例 1**: ``` 5 3 2 5 5 4 3 8 6 5 4 ``` 处理过程: 1. 长度 3 (<5) 忽略。 2. 长度 5 (合格),count=1, total_width=5。 3. 长度 4 (<5) 忽略。 4. 长度 8 (合格),count=2, total_width=5+6=11。 5. 此时 total_width=11 ≥10,循环结束(后续木头不看)。 输出:`2 11` ✅ **样例 2**: ``` 6 4 3 6 3 8 6 3 2 5 6 4 3 ``` 处理过程: 1. 长度 4 (<5) 忽略。 2. 长度 6 (合格),count=1, total_width=3。 3. 长度 8 (合格),count=2, total_width=3+6=9。 4. 长度 3 (<5) 忽略。 5. 长度 5 (合格),count=3, total_width=9+6=15。 6. 此时 total_width=15 ≥10,循环结束。 输出:`3 15` ✅ --- ## 🛡️ 开发建议 1. **边界条件**:注意 `n=0` 的情况,代码也能正确处理(输出 `0 0`)。 2. **提前终止**:使用 `break` 可以提高效率,避免不必要的循环。 3. **变量命名**:使用有意义的变量名(如 `count`, `total_width`)增强可读性。 4. **输入验证**:在实际应用中,可以加入对输入数据的合法性检查(如宽度是否为非负整数)。 5. **扩展性**:如果规则变化(如长度阈值或宽度阈值可变),可以将这些值定义为常量或从输入读取,提高代码灵活性。 --- ######[AI写代码神器 | 1087点数解答 | 2026-03-20 19:25:43]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]