约瑟夫问题Java代码

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

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());  
    }  
}