首页 > 其他 > 详细

模拟选猴王

时间:2017-11-20 18:36:18      阅读:247      评论:0      收藏:0      [点我收藏+]

        

技术分享图片

#include<stdio.h>
#include<stdlib.h>
int aloop[310];
int main(){
int n,m,i;
while(1){
scanf("%d%d",&n,&m);
if(n==0)
break;
for(i=0;i<n;i++){//编号
aloop[i]=i+1;
}
int nptr=0;
for(i=0;i<n;i++){//每次循环将一个猴子赶出去
int ncounter=0;
while(ncounter<m){//数m个猴子
while(aloop[nptr]==0)//跳过数过的猴子
nptr=(nptr+1)%n;//跳到下一位
ncounter++;
nptr=(nptr+1)%n;//跳到下一位
}
nptr--;//五个手指四个缝隙,数m只猴子,跳m-1下,要回退一位
if(nptr<0){
nptr=n-1;//当nptr=0时回退会变为负数
}
if(i==n-1)
printf("%d\n",aloop[nptr]);//输出猴王的编号
aloop[nptr]=0;//应该跳过的猴子
}
}
}

 

模拟选猴王

原文:http://www.cnblogs.com/jrx12354/p/7867568.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!