n个人围成一个圈报3,或者约瑟夫环,或者丢手绢

标题:n个人围成一个圈报3,或者约瑟夫环,或者丢手绢

下面这个视频,可以让你了解什么是约瑟夫环,此后,自己写代码实现一下,可以看看我的代码作为参考,
参考视频:

调用,n=10,编号从1-10,start = 2,从2开始报数【1 2 3】
在这里插入图片描述

刚开始的时候,将start固定为1,就好了,

//丢手帕,n个人围成一个圈,报数3,约瑟夫环
    public void test02(int n,int start){
        int count = 0;
        int[] arr = new int[n+1];
        int count_c = 0;
        int i = start;

        while(true)
        {
            //1.计数
            count++;
            if(count == 3){
                //淘汰
                arr[i] = -1;
                count = 0;
                count_c++;
                System.out.print(i + " ");
            }
            //十个人都报完了数
            if(count_c == n){
                return ;
            }
            //2.下一个人
            i++;
            //操作n,就重新循环,eg:n=10,i++就变成了11,
            if(i > n){
                i = 1;
            }
            //3.只要遍历了,就找下一个,最后,就只有一个人了,一次轮回后,
            while(arr[i] == -1){
                i++;
                //重新循环
                if(i > n){
                    i = 1;
                }
            }
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值