酷代码 AI
菜单
服务商

巧用队列算法:求解 n 人围圈游戏的获胜者序列号

```cpp #include <iostream> #include <cstdlib> #include <queue> using namespace std; int findTheWinner(int n, int k) { // 创建一个队列来模拟小伙伴围成的圈 queue<int> circle; // 将 1 到 n 的小伙伴编号依次加入队列 for (int i = 1; i <= n; ++i) { circle.push(i); } // 当队列中不止一个小伙伴时,继续游戏 while (circle.size() > 1) { // 数 k - 1 个小伙伴 for (int i = 1; i < k; ++i) { // 将队首的小伙伴移到队尾 int front = circle.front(); circle.pop(); circle.push(front); } // 移除数到的第 k 个小伙伴 circle.pop(); } // 返回队列中剩下的最后一个小伙伴,即获胜者 return circle.front(); } ``` ######[AI问答 | 235点数解答 | 2025-11-05 15:04:55]

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