约瑟夫环问题(根据算法竞赛入门经典一题改编)

《约瑟夫环问题(根据算法竞赛入门经典一题改编)》

 

#include <cstdio>
#define maxn 1010
int n,m,a[maxn];

int go(int p,int d,int t){
    while(t--){
        do{p=(p+d+n-1)%n+1;}while(a[p]==0);
    }
    return p;
}

int main(){
    while(scanf("%d%d",&n,&m)==2){
        for(int i=1;i<=n;i++) a[i]=i;
        int left=n,p=n;
        while(left){
            p=go(p,1,m);
            printf("%d ",p);left--;
            a[p]=0;
        }
        printf("\n\n");
    }
    return 0;
}

    原文作者:约瑟夫环问题
    原文地址: https://blog.csdn.net/u012181348/article/details/53173195
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞