カスタムジョセフリング
1334 ワード
ヨセフ環(Josephus)問題:古代のある裁判官はn人の犯人の死刑を判決した.彼はでたらめな法律を持っていて、犯人を丸くして、s人から数え始め、d人目の犯人を数えるたびに、引き出して処刑し、それからd人を数え、数えた人を処刑した.残りの最後の赦免ができるまで.
public class Josephus {
private static class Node {
public int no;//
public Node next;//
public Node(int no) {
this.no = no;
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print(" :");
int totalNum = scanner.nextInt();
System.out.print(" :");
int cycleNum = scanner.nextInt();
Node header = new Node(1);
Node pointer = header;
System.out.println("header==pointer?"+(header==pointer));
System.out.println("header.equals(pointer)?"+(header.equals(pointer)));
for (int i = 2; i <= totalNum; i++) {
pointer.next = new Node(i);
pointer = pointer.next;
}
pointer.next = header;
//
System.out.println(" :");
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);
}
}