首页 > 其他 > 详细

约瑟夫环

时间:2018-08-11 22:57:40      阅读:156      评论:0      收藏:0      [点我收藏+]
#include<cstdio>
#include<cstring>
using namespace std;
bool a[1001];
int main()
{
    memset(a,0,sizeof(a));
    int m,n,out=0,p=0,num=0;
    scanf("%d%d",&m,&n);
    while(out!=m)    //循环条件:出圈人数不等于m(即人没都出圈) 
    {
        ++p;    //模拟每一个位置 
        if(p==m+1) p=1;  //将线性问题转为圈型(技巧★★★) 
        if(a[p]==false) num++; //没出圈,就报数 
        if(num==n) //报数满时 
        {
            a[p]=true;  //出圈 
            num=0;   //计数器清0 
            out++;  //出圈数加一 
            printf("%-3d",p);
        }
    }
}

 

约瑟夫环

原文:https://www.cnblogs.com/czy0130/p/9461415.html

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