PTA 5-28 猴子选大王
来源:互联网 发布:电子书什么软件好 编辑:程序博客网 时间:2024/05/22 12:10
一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?
输入格式:
输入在一行中给一个正整数N(≤1000)。
输出格式:
在一行中输出当选猴王的编号。
输入样例:
11
输出样例:
7
思想:使用循环链表建立约瑟夫环来实现,过程比较清晰。
#include <iostream>#include <cstdio>using namespace std;typedef struct node{ int num; struct node *next; node()//初始化 { num=0; next=NULL; }}*Link;Link create(Link L,int n)//建表{ L=new node(); Link p,q; p=L; int i=1; while(i<=n) { q=new node(); q->num=i; p->next=q; p=q; i++; } p->next=L->next;//建立循环链表 return p;}void caculate(Link L,int n)//计算{ L=create(L,n); Link p,q; p=L->next; int num=0,i=n; while(p->next->num!=1) p=p->next; while(i>1)//一共删除掉n-1的元素,保留下一个用做输出 { while(num<2) { num++; p=p->next; } q=p->next;//指针保留 p->next=q->next;//删除出列的元素 num=0; i--; if(i==1) break; } cout<<p->num;}int main(){ int n; cin>>n; Link L; caculate(L,n); return 0;}
0 0
- PTA 5-28 猴子选大王
- 5-28 猴子选大王
- 5-28 猴子选大王 (20分)
- 5-28 猴子选大王 (20分)
- 5-28 猴子选大王 (20分)
- 5-28 猴子选大王 (20分)
- 5-28 猴子选大王 (20分)
- 5-28 猴子选大王 (20分)
- 5-28 猴子选大王 (20分)
- 项目5 -- 猴子选大王
- 项目5 -- 猴子选大王
- PAT-JAVA-5-28 猴子选大王 (20分)
- 5-28 猴子选大王 ,即约瑟夫环问题
- [pattest]7-28 猴子选大王
- 第四周-项目5-猴子选大王
- 第四周-项目5 - 猴子选大王
- 项目5——猴子选大王
- 第四周项目5-猴子选大王
- DataTable相关资料
- Leetcode141——Linked List Cycle
- 浅谈Java的Comparator接口实现自定义排序Arrays.sort()
- linux中的粘滞位
- 剑指Offer 19 : 二叉树镜像
- PTA 5-28 猴子选大王
- mysql配置以及性能优化(转)
- 分享一个MySQL分库分表备份脚本(原)
- c 程序设计语言 第二版 练习题 5-1
- js:计时器
- 谁是冠军,亚军and季军
- 天地飞9设置Pixhawk/PX4六段开关
- c++基础之函数新特性
- 我要去 Google 前端组工作了