約瑟夫環是一個數學的應用問題:已知n我的(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍.從編號爲k的人開始報數,數到m的那我的出列;他的下一我的又從1開始報數,數到m的那我的又出列;依此規律重複下去,直到圓桌周圍的人所有出列.java
import java.util.Scanner; public class Test { /** * @param args */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int k = scanner.nextInt(); int m = scanner.nextInt(); // 初始化 Node head = new Node(1, null); Node temp = new Node(); for (int i = 2; i <= n; i++) { Node node = new Node(i, null); if (i == n) { node.node = head; temp.node = node; temp = temp.node; } else { if (head.node == null) { head.node = node; temp = node; } else { temp.node = node; temp = temp.node; } } } temp = head; for (int i = 1; i < k; i++) { temp = temp.node; } while (temp!=temp.node) { for(int i = 1 ; i < m-1; i++){ temp = temp.node; } System.out.println(temp.node.n); temp.node = temp.node.node; } System.out.println(temp.n); scanner.close(); } } class Node { int n; Node node; Node() { } public Node(int n, Node node) { this.n = n; this.node = node; } }