1. 程式人生 > 其它 >01-JAVA基礎—>陣列—>選隊長(約瑟夫)

01-JAVA基礎—>陣列—>選隊長(約瑟夫)

技術標籤:java學習筆記java

1-2-3-4-5-6-7-8-9-10-
1-2-3-4-5-7-8-9-10-
2-3-4-5-7-8-9-10-
2-3-4-5-8-9-10-
2-4-5-8-9-10-
2-4-5-8-9-
2-4-5-8-
4-5-8-
4-8-

4
 
	/**
	 * 
	 * @param n  一共有多少個人 報數
	 * @param start 從第幾個開始報數
	 * @param step	報數的步長
	 * @return
	 */
	public int getResult(int n,int start,int step){
		int[] all=
null; //初始化這個佇列 if(all==null){ all=new int[n]; for(int i=0;i<n;i++){ all[i]=i+1; } } //計算出陣列的開始數下標 int startIndex=start%n-1; while(all[1]!=0){ for(int i=0;i<n;i++){ System.out.print(all[i]+"-"); } System.out.println(); //計算出要刪除陣列的下標 int removeIndex=
(startIndex+step-1)%n; startIndex=removeIndex; //將後面的數字往前移動一個位置 while(removeIndex<n-1){ all[removeIndex]=all[removeIndex+1]; removeIndex++; } //將最後一個位置的數字設定為0 all[n-1]=0; //每次只刪除一個 n--; } System.out.println(); return all[0]; } /** * @param args * 測試 */ public
static void main(String[] args) { Demo01050_zy22 josephus=new Demo01050_zy22(); System.out.println(josephus.getResult(10, 2, 5)); }