[java]约瑟夫环问题

约瑟夫环问题:一圈共有N个人,开始报数,报到M的人自杀,然后重新开始报数,问最后自杀的人是谁?

//链表实现
public class Node{
    public int value;
    public Node next;
    
    public Node(int data){
        this.value=data;
    }
}
public Node josephuskill(Node head,int m){
    if(head==null||head.next==head||m<1){
        return head;
    }
    Node last=head;
    while(last.next!=head){
        last=last.next;
    }
    int count=0;
    while(head!=last){
        if(++count==m){
            last.next=head.next;
            count=0;
        }
        else{
            last=last.next;
        }
        head=last.next;
    }
    return head;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 复习一下关于约瑟夫环的实现原理: 如果用C来写的话,也会有许多的方法,比如1:采用链表(双向链表)2:递归3:队列...
    碧影江白阅读 2,188评论 0 3
  • 问题描述 约瑟夫(Joeph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码...
    GarfieldEr007阅读 1,586评论 0 2
  • 本系列博客习题来自《算法(第四版)》,算是本人的读书笔记,如果有人在读这本书的,欢迎大家多多交流。为了方便讨论,本...
    kyson老师阅读 1,495评论 0 49
  • 什么是约瑟夫环呢?约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在...
    孙静静阅读 1,222评论 1 3
  • 发乎思想,见于造物。 用文化、艺术寻觅知己,共同打造完美的人文空间! 等候你……我们久已期盼的知己! 敬请关注两江物语!
    两江物语阅读 265评论 0 0