java——約瑟夫環
阿新 • • 發佈:2018-10-31
問題描述:一圈人(n個)圍著一起報數,報到x的淘汰,規定最後場上剩下的y人為勝利者。
/** * 約瑟夫環,用陣列方法解決 * @param personNumber 總人數 * @param number 報到就淘汰的數字 * @param survive 最後需要留的人數 */ public static void josephRing(int personNumber,int number,int survive) { int[] array = new int[personNumber]; //先把人放到數組裡面,陣列下標就是編號 int m = 0; //計數 int n = personNumber; //報到number數的人數 while(n > survive) { for (int i = 0; i < array.length; i++) { if (array[i] == 0) { m++; if (m == number) { m = 0; //如果數到number數字,該人出局,重新從1開始數數 array[i] = 1; //將報了number數的人標記為1 n--; //報一個number少一個人 System.out.println(i + 1 + "號淘汰"); } } } } for(int i = 0;i < array.length;i++) { if(array[i] == 0) { System.out.println(i+1+"號成功"); } } }