第四周项目5 -猴纸选大王
2015-10-05 17:14
239 查看
#include <iostream> using namespace std; struct Monkey { int num; //猴子的编号 struct Monkey *next; //下一只猴子 }; int main() { int m,n,i,j,king; Monkey *head, *p1,*p2; cin>>m>>n; if(n==1) { king=m; } else { //建立猴子围成的圆圈 p1=p2=new Monkey; head = p1; head->num=1; for(i=1,p1->num=1; i<m; i++) //其余m-1只猴子 { p1=new Monkey; //p1是新增加的 p1->num=i+1; p2->next=p1; p2=p1; //p2总是上一只 } p2->next=head; //最后一只再指向第一只,成了一个圆圈 //下面要开始数了 p1=head; for(i=1; i<m; i++) //循环m-1次,淘汰m-1只猴子 { //从p1开始,数n-1只就找到第n只了 for(j=1; j<n-1; j++) //实际先找到第n-1只,下一只将是被淘汰的 p1=p1->next; //围成圈的,可能再开始从第一只数,如果还未被淘汰的话 //找到了, p2=p1->next; //p2将被删除 //cout<<"第"<<i<<"轮淘汰"<<p2->num<<endl; //可以这样观察中间结果 p1->next=p2->next; //p2就这样被“架空了” p1=p2->next; //下一轮数数的新起点 delete p2; //将不在链表中的结点放弃掉 } king=p1->num; delete p1; } cout<<king<<endl; return 0; }
相关文章推荐
- 第四周项目2 建立单链表算法库
- Spring自带的几种容器实现
- 【BZOJ3450】【Tyvj1952】Easy 可能DP
- 第三周项目3——求集合并集
- 第六周项目1 - 建立顺序栈算法库
- 第三周--【项目 - 求集合并集】
- 数据结构实践——多项式求和
- C++中对象的赋值与复制操作详细解析
- 第4周 项目6-多项式求和
- code signing is required for product type 'Application' in SDK 'iOS 9.0'错误
- 第六周项目2—数据结构之自建算法库—链栈
- [深入理解Java虚拟机]第三章 HotSpot的垃圾收集算法实现
- txt去重
- 第六周——项目一:建立顺序栈算法库
- 第6周—项目1 建立顺序栈算法库
- linux内核源文件介绍以及头文件的位置
- Trending repositories(iOS的趋势存储库)
- 第3周项目4—顺序表应用问题(2)
- IntelliJ IDEA FOR MAC 控制台输出中文乱码
- 第4周项目1 建立单链表