猴子选大王(数组按顺序循环删除某个数)

来源:互联网 发布:淘宝自动下架的原因 编辑:程序博客网 时间:2024/05/22 04:32
有n只猴子围成一圈,每只猴子从1到n依次编号。猴子们打算从中选出一个大王,经过协商,决定出选大王的规则:从第一个猴子开始循环报数,数到m的猴子出圈,最后剩下来的就是大王。你的任务是计算哪一个编号的猴子成为大王。
输入与输出要求:首先输入两个整数n(1<=n<=100)和m(m<=n)。n代表猴子的总个数,m代表每轮报数的猴子数。输出第几只猴子是大王。
程序运行效果:
Sample 1:
7↙
3↙

4

#include<stdio.h>int succ(int c);//到达边界时,返回下一个猴子序号为1 int nextMonkey(int t);// 返回下一个没有被排除的猴子的序号 int n,m;//设置全局变量,便于在子函数中对数据的利用 int a[101];//存储猴子的数量 int main(void){int i,j,p,m;scanf("%d%d",&n,&m);for(i=1;i<=n;i++)a[i]=1;//初始值全都设为1,1表示猴子没被排除,0表示猴子已被排除p=1;//这里p表示从第一只猴子开始排除 for(i=1;i<n;i++)//从1开始 ,循环n-1次 {for(j=0;j<m-1;j++)//m为循环间隔 {p=nextMonkey(p);}//将该轮到的猴子序号进行更新 a[p]=0;//循环结束,选中猴子被淘汰,设为0 p=nextMonkey(p);//开始下一次循环,将p更新到下一个没被淘汰的猴子上 }printf("%d",p);//循环彻底结束 return 0;}int succ(int t){if(t==n)return 1;//一环循环一圈,开始下一圈 return t+1;}int nextMonkey(int t){int i;i=succ(t);while(a[i]!=1)//判断猴子是否被淘汰 i=succ(i);//没被淘汰,直接更新到下一个猴子序号 return i;}


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 送挂历 挂历纸 挂历尺寸 艺术挂历 挂历批发 挂历图片 挂历设计 2016年挂历 别墅挂历 挂历模版 山水挂历 新年挂历 无纺布挂历 老挂历 挂历照片 百年挂历 挂历英语 挂历收藏 李居明挂历 挂历模板 今日挂历 挂历材料 挂历diy 挂历是什么 明星合挂历斗转星移 明星挂历斗转星移 杜达雄所有挂历 挂历2019年老黄历 今日挂历冲什么生肖 杜达雄男色挂历 照片挂历制作 挂历设计印刷公司 挂历印刷厂家 2016年挂历定制 怎么制作挂历 用照片做挂历 挂历图片素材 月历定制 透明月历 行事月历 创意月历