C语言实验题——约瑟夫问题(JSU-ZJJ)

题目描述

n个人想玩残酷的死亡游戏,游戏规则如下:
n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。请输出最后一个人的编号。
输入
输入n和m值。1<n,m<150。
输出
输出胜利者的编号。
样例输入
5 3
样例输出
4

#include"stdio.h"
int main()
{
    int a[150];
    int n,m,i,j,k,count;
    while(~scanf("%d%d",&n,&m))
    {
        for(i=1; i<=n; i++)
            a[i]=1;
        k=0;
        count=n;
        for(i=1; count>1; i++)
        {
            if(a[i]==1)
                k++;
            if(k==m)
            {
                a[i]=0;
                k=0;
                count--;
            }
            if(i+1>n)
                i=0;
        }
        for(i=1; i<=n; i++)
            if(a[i]==1)
                break;
        printf("%d\n",i);

    }
}

猜你喜欢

转载自blog.csdn.net/qq_43506138/article/details/84501330