第四周--【项目5 - 猴子选大王】
2015-11-02 16:52
369 查看
代码:
运行结果:
即:总共有15只猴子,每数到第7只猴子退出,第5只猴子是大王。
#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; p1->num=1; for(i=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; }
运行结果:
即:总共有15只猴子,每数到第7只猴子退出,第5只猴子是大王。
相关文章推荐
- 第八周 字符串加密
- rem 响应式布局
- Android学习路线
- Edge Padding
- C语言预处理指令
- 找到预测商品的购买者
- 成员变量 和 属性
- 关于静态变量初始化问题
- test
- 6.C#的循环语句
- (二)实现菜单动画
- Android程序开发:简单电话拨号器
- oracle11g分页优化,rowid和rownum的性能比较,解决越往后数据查询越慢的问题
- 与企业某老师的一次谈话
- JS 加法函数,用来得到精确的加法结果
- 支持设置数据为空时打底view的RecyclerView+支持RecyclerView的CursorAdapter
- 【LEETCODE】102-Binary Tree Level Order Traversal
- linux下安装MYSQL错误:conflicts with file from package mysql-libs-*的解决方法
- iOS 应用程序图标数字角标
- 基于视频的车辆检测(c语言)