约瑟夫问题Java代码详解编程语言

public class JosephQuestion {   
   
    public static void main(String[] args) {   
        for (int i = 2; i < 11; i++) {   
            findMonitor(initPersons(i),i);   
        }   
    }   
   
    public static Person initPersons(int num) {   
        Person firstPerson = new Person(1);   
        Person lastPerson = firstPerson;   
        for (int i = 2; i <= num; i++) {   
            Person person = new Person(i);   
            lastPerson.setNextPerson(person);   
            lastPerson = person;   
        }   
        lastPerson.setNextPerson(firstPerson);   
        for (int i = 0; i <num; i++) {   
            System.out.print(firstPerson.getName()+" ");   
            firstPerson = firstPerson.getNextPerson();   
        }   
        System.out.println();   
        return firstPerson;   
    }   
   
    public static void findMonitor(Person person,int size) {   
        Person lastPerson = person;   
        int counter = 1;   
        while(size>1){   
            lastPerson = person;   
            person = person.getNextPerson();   
            counter++;   
            if(counter==3){   
                lastPerson.setNextPerson(person.getNextPerson());   
                person =lastPerson.getNextPerson();   
                counter=1;   
                size--;   
            }   
        }   
        System.out.println(person.getName());   
    }   
}  

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/10646.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论