算法--约瑟夫斯环

n个人围成一个圆圈,编号为1~n,从第一号开始报数,报到m的倍数的人离开, 一直数下去,直到最后只有一个人, 求此人编号

public class Josephus {
    public int josephus(int n, int m) {
        int s = 0;
        for (int i = 2; i <= n; i++) {
            //每轮出局的人的序号
            s = (s + m) % i;
        }
        //编号1开始
        return s + 1;
    }

    public static void main(String[] args) {
        System.out.println(new Josephus().josephus(15, 3));
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 5,947评论 0 2
  • 复习一下关于约瑟夫环的实现原理: 如果用C来写的话,也会有许多的方法,比如1:采用链表(双向链表)2:递归3:队列...
    碧影江白阅读 6,893评论 0 3
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 10,538评论 0 41
  • [Java编程题90道] 1.完成数组int[] a = {100,40, 60, 87, 34, 11, 56,...
    Mr_不靠谱_先森阅读 10,801评论 0 3
  • 高效能教师的特质中有这样一条:教师应明确知道如何为学生掌握知识而设计课程。书中提到为促使学生去学习,应该是教...
    新民亚平阅读 793评论 0 2