c语言(约瑟夫环)2017.4.23

来源:互联网 发布:佛教app软件 编辑:程序博客网 时间:2024/05/20 23:30
/*有n个人围成一圈,顺序排号(从1开始)。从第一个人开始报数(从1到3报数),凡报到m的人退出圈子,问最后留下的是原来第几号的那位。
如 输入 10 ,最后留下4号
*/

#include<stdio.h>
#define N 100
int main()
{
    int pos=-1;
    int i=0,j=0,n,m,count=1;
    int a[N]={0};
    printf("人数:");
    scanf("%d",&n);
    printf("几个一出:");
    scanf("%d",&m);


    while(count<=n)
    {
        do{
            pos=(pos+1)%n;//在这里取余数,因为要循环好几次
            if(a[pos]==0)
                j++;//计数
            if(j==m)//如果等于指定个数,将计数还原0
               { j=0;
               break;
               }

        }while(1);
        a[pos]=count;//第几个位置上第几次出去
        count++;
    }
    for(i=0;i<n;i++)
        {
            if(a[i]==n)
                {printf("%d",i+1);
              
        }

    return 0;
}
0 0
原创粉丝点击