约瑟夫问题

来源:互联网 发布:php证书查询系统 编辑:程序博客网 时间:2024/06/07 14:45

设编号分别为:1,2,...,n的n个人围坐一圈。约定序号为k(1 <= k < = n)的人从1开始计数,数到m的那个人出列,他的下一位又从1开始计数,数到m的那个人又出列,依次类推,直到所有人出列为止。

package Josephus;public class Josephus {public static Node create(int n){Node head,p;head=new Node();p=head;int i=1;Node s = null;if(n!=0){while(i<=n){s=new Node();s.data=i++;p.next=s;p=s;}p.next=head.next;}return p.next;}     public static void main(String args[])     {     int n=41;     int m=3;     Node temp;     Node p=create(n);     n%=m;     while(p!=p.next)     {     for(int i=1;i<n;i++)     {     p=p.next;     }     System.out.print(p.next.data+"->");     temp=p.next;     p.next=temp.next;     p=p.next;     }     System.out.println(p.data);     }}
public class Node {int data;Node next;}



0 0
原创粉丝点击