酷代码 AI
菜单
服务商

C++实现计算不同可见情况的小鸟数量

以下是解决该问题的C++代码: ```cpp #include <iostream> #include <vector> #include <sstream> #include <string> using namespace std; // 计算被不同数量小鸟看到的小鸟数量 void countVisibleBirds(const vector<char>& birds) { int n = birds.size(); // 初始化被0只、1只、2只小鸟看到的小鸟数量 int seenBy0 = 0, seenBy1 = 0, seenBy2 = 0; for (int i = 0; i < n; ++i) { int visibleCount = 0; // 检查左边小鸟是否能看到当前小鸟 if (i > 0 && birds[i - 1] == 'p') { visibleCount++; } // 检查右边小鸟是否能看到当前小鸟 if (i < n - 1 && birds[i + 1] == 'q') { visibleCount++; } // 根据可见小鸟数量更新对应计数器 if (visibleCount == 0) { seenBy0++; } else if (visibleCount == 1) { seenBy1++; } else if (visibleCount == 2) { seenBy2++; } } // 输出结果 cout << seenBy0 << "," << seenBy1 << "," << seenBy2 << endl; } int main() { int N; cin >> N; cin.ignore(); // 忽略换行符 string input; getline(cin, input); vector<char> birds; stringstream ss(input); string token; // 解析输入的字符 while (getline(ss, token, ',')) { birds.push_back(token[0]); } // 调用函数计算并输出结果 countVisibleBirds(birds); return 0; } ``` ### 代码解释 1. **输入处理**:首先读取小鸟的数量`N`,然后读取一行包含逗号分隔的字符,将其解析为字符向量`birds`。 2. **计算可见小鸟数量**:遍历每只小鸟,检查其左右两边的小鸟是否能看到它,统计被0只、1只、2只小鸟看到的小鸟数量。 3. **输出结果**:将统计结果以逗号分隔的形式输出。 ######[AI问答 | 567点数解答 | 2026-02-28 12:30:34]

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