zoukankan      html  css  js  c++  java
  • 用Java实现约瑟夫环

    约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列.

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

      

  • 相关阅读:
    hdu 3496
    poj 2374
    zoj 3399
    poj 1321
    sgu 365
    hdu 3555
    poj 3345
    poj 2355
    Android重命名文件
    在workflow中传值的sample
  • 原文地址:https://www.cnblogs.com/elleniou/p/3321066.html
Copyright © 2011-2022 走看看