加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_潮州站长网 (http://www.0768zz.com/)- 物联安全、建站、操作系统、云计算、数据迁移!
当前位置: 首页 > 教程 > 正文

Java达成约瑟夫环

发布时间:2021-11-18 21:52:07 所属栏目:教程 来源:互联网
导读:什么是约瑟夫环呢? 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 我

什么是约瑟夫环呢?
 
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
 
我们用程序说话,实现约瑟夫环:eclipse jdk1.6
 
package code;
 
import Java.awt.PointerInfo;
import java.util.Random;
import java.util.Scanner;
 
public class Josephus {
    private static class Node{
        public int no;
        public Node next;
       
        public Node(int no){
            this.no = no;
            this.next =null;
        }
    }
    public static void main(String[] args){
        /*
        Scanner input = new Scanner(System.in);
        System.out.println("taotal nums");
        int totalNum = input.nextInt();
        System.out.println("size");
        int cycleNum = input.nextInt();*/
       
       
        Random rand = new Random();
        int totalNum = rand.nextInt(30);
        int cycleNum =rand.nextInt(5);
        if(cycleNum <=1 || cycleNum >= totalNum){
            System.out.println("error");
            return ;
        }
        Node header = new Node(1);
        Node pointer = header;
        for(int i = 2 ;i<= totalNum ;i++){
            pointer.next = new Node(i);
            pointer = pointer.next;
        }
        pointer.next = header ;
       
        System.out.println(totalNum +" " + cycleNum);
        System.out.println("order output");
        while(pointer != pointer.next){
            for ( int i =1 ;i <cycleNum ;i++){
                pointer =pointer.next;
            }
            System.out.println(pointer.next.no);
            pointer.next = pointer.next.next;
        }
        System.out.println(pointer.next.no);
    }
}

(编辑:我爱制作网_潮州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读