C++链表实现猴子报数
2020-04-05 07:27
507 查看
猴子报数
n个猴子围坐一圈并按照顺时针方向从1到n编号,从第s个猴子开始进行1到m的报数,报数到第m的猴子退出报数,从紧挨它的下一个猴子重新开始1到m的报数,如此进行下去知道所有的猴子都退出为止。求给出这n个猴子的退出的顺序表。
#include<bits/stdc++.h> using namespace std; struct mo { int num; struct mo* next; bool f; //false跳出 }; mo * init(int n) //初始化循环链表 { mo *r;//尾部 mo *head = new mo; r = head; head->f = true; head->num = 1; head->next = NULL; for (int i = 2; i <= n; i++) { mo *p = new mo; p->num = i; p->f = true; p->next = NULL; r->next = p; r = r->next; } r->next =head; return head; } void fun(mo *head, int n,int a,int b) { int cnt = 0; //报数 mo *s = head;//移动位置 for (int i = 0; i < a-1; i++) //移动到a位置 s = s->next; while (n > 0) { if (n == 1&&s->f==true) { cout<<s->num<<endl; break; } if (s->f) { cnt++; } if (cnt == b)//退出 { s->f=false; cout << s->num << ","; n--; cnt = 0; } s = s->next; } } int main() { int n,a,b; while(cin>>n>>a>>b) { if(n==0&&a==0&&b==0)break; mo *p=init(n); fun(p,n,a,b); } return 0; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 数据结构与算法--链表C++实现
- 左神的书——《程序员代码面试指南》之逆置单链表或双链表 c++实现
- 递归,迭代,堆栈三种方式实现单链表反转(C++)
- C++ 实现双向链表的实例
- 数据结构之链表的实现-------C++课程设计-----学生选课管理系统
- C++数据结构之双链表实现
- 用C++实现链表版本通讯录
- c++实现双向链表的基本操作
- 用c++实现单向链表的创建,插入和删除
- c++实现单链表
- 链表的C++实现
- 左神算法-单链表相交【c++实现】
- C++实现链表的基本操作及测试用例
- C/C++面试程序题(一)——字符串反转、链表反转的递归、非递归实现
- VC++编译问题汇总1 单链表的表示和实现,基于c++
- c/c++实现顺序表和单链表
- C++实现简单链表
- c++实现单向单链表及常见面试题
- C++利用链表与模板实现栈
- 单循环链表C++实现