約瑟夫環(huán):已知n個(gè)人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報(bào)數(shù),數(shù)到m的那個(gè)人出列;他的下一個(gè)人又從1開始報(bào)數(shù),數(shù)到m的那個(gè)人又出列;依此規(guī)律重復(fù)下去,直到圓桌周圍的人全部出列。
直接給出代碼,歡迎拍磚。
1 package com.timeng; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.util.Scanner; 6 7 public class Yue { 8 public static void main(String[] args) { 9 Scanner scanner = new Scanner(System.in); 10 System.out.print('請輸入總?cè)藬?shù):'); 11 int totalNum = scanner.nextInt(); 12 System.out.print('請輸入報(bào)數(shù)的大?。?); 13 int cycleNum = scanner.nextInt(); 14 yuesefu(totalNum, cycleNum); 15 } 16 17 public static void yuesefu(int totalNum, int countNum) { 18 // 初始化人數(shù) 19 List<Integer> start = new ArrayList<Integer>(); 20 for (int i = 1; i <= totalNum; i ) { 21 start.add(i); 22 } 23 //從第K個(gè)開始計(jì)數(shù) 24 int k = 0; 25 while (start.size() >0) { 26 k = k countNum; 27 //第m人的索引位置 28 k = k % (start.size()) - 1; 29 // 判斷是否到隊(duì)尾 30 if (k < 0) { 31 System.out.println(start.get(start.size()-1)); 32 start.remove(start.size() - 1); 33 k = 0; 34 } else { 35 System.out.println(start.get(k)); 36 start.remove(k); 37 } 38 } 39 } 40 }
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。