约瑟夫环,出圈游戏

来源:互联网 发布:斑马网络 上汽撤资 编辑:程序博客网 时间:2024/06/05 18:55

贴上大一写的小程序,很亲切。

约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。

从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,

直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解

C代码:

#include<stdio.h>int main(){int m,n,a[100],out=0,i,j=0,k=0,q,b[100]={0};while(scanf("%d%d",&n,&m)!=EOF) {for(i=0;i<n;i++)a[i]=i+1;while(out<n){for(i=0;i<n;i++){if(a[i]!=0)j++;if(j==m){b[++k]=a[i];out++;j=0;a[i]=0;} }}for(q=1;q<n;q++)   printf("%d ",b[q]);printf("%d\n",b[n]);out=0;j=0;k=0;}return 0;}

0 0
原创粉丝点击