約瑟夫環 java實現
阿新 • • 發佈:2019-01-06
問題:
N個人從1到N編號,圍城一圈,從1開始報數, 數到X時,將X的編號輸出,並將那個人踢出,
下一個從1再開始報數,直到所有人都出去
思路:
就是計數,移除,沒有太深的思想,直接上程式碼:
package test; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * N個人從1到N編號,圍城一圈, * 從1開始報數, 數到X時,將X的編號輸出,並將那個人踢出, * 下一個從1再開始報數,直到所有人都出去 * @author anjl * */ public class My_JosephCircle { public static void main(String[] args) { List alist = new ArrayList(); System.out.println("請輸入約瑟夫環 中 總個數數:"); Scanner sca = new Scanner(System.in); int N = sca.nextInt(); // 提示輸入要出圈的數值 System.out.println("請輸入要出圈的數值:"); int X = sca.nextInt(); System.out.println("按出圈的次序輸出序號:"); for(int i=0 ;i<N;i++){ alist.add(i+1); } int i=-1; int countX=0; while(alist.size()!=0){ ++i; if(i== alist.size()){ i=0; } ++countX; if(countX==X){//輸出 System.out.print(alist.get(i)+ " "); alist.remove(i); countX=0; i--;//修正 } } } }