码迷,mamicode.com
首页 > 其他好文 > 详细

模拟选猴王

时间:2017-11-20 19:12:20      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:printf   技术   ++   循环   count   http   for   回退   lib   

        

技术分享图片

#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;//应该跳过的猴子
}
}
}

 

模拟选猴王

标签:printf   技术   ++   循环   count   http   for   回退   lib   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!